deployment - 如何使用 Ansible 强制重新安装软件包?

标签 deployment ansible apt deb

我正在使用 Ansible 从自定义存储库部署 .deb 包。

有时开发人员可能会忘记更改包号,因此存储库将拥有旧版本的新包。这是不必要的,所以我想总是重新安装包。我怎么做?

force=yes apt module 的选项. Ansible documentation说:

If yes, force installs/removes.



但这似乎是关于强制接受任何警告。至少当我关闭它时,Ansible 会被阻止,并收到有关不可信来源的警告。 (存储库和服务器都在同一个内部网中,所以这应该不是问题)

我可以用这个:
- name: force-reinstall myservice
  shell: apt-get --reinstall install myservice

但是这样我就不能对 apt module 使用其他选项,并且 Ansible 以同样的方式被警告阻止。

有没有办法始终重新安装软件包并避免阻止任何交互?

最佳答案

正确的方法肯定是使用正确的版本号。但是,如果您不想强制执行此操作,那么最简单的解决方法是先删除该软件包,然后再重新安装。这实际上与重新安装相同。

- name: remove package
  apt: name=package_name state=absent

- name: install package
  apt: name=package_name state=present update_cache=yes

关于deployment - 如何使用 Ansible 强制重新安装软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34260658/

相关文章:

regex - 在 Ansible 中提取 {{ inventory_hostname }} 的一部分以在 playbook 中使用

Debian 多架构 : what is the difference between multi-arch: same and multi-arch: foreign

ubuntu - 谷歌云虚拟机中的 apt-get 命令

从 GitHub 部署 Azure Web 服务失败

python - Azure ML本地部署: tarfile. ReadError:无法成功打开文件

docker - 使用 ansible docker_service 模块在 docker-compose.yml 中仅启动一项服务

django - 通过 Ansible 为 supervisorctl 管理的 Python 应用程序修改 PYTHONPATH

ubuntu - Vagrant + Chef + apt : Is it possible to install a specific version of a deb package on a Ubuntu VM?

ruby-on-rails - 无方法错误 : relative_url_root when deploying rails app on tomcat

tomcat - 在tomcat7上用maven部署