如何使用 Ansible 强制重新安装软件包?
How do I force-reinstall a package with Ansible?
我正在使用 Ansible 从自定义存储库部署 .deb 包。
有时开发人员会忘记更改包号,因此存储库将包含旧版本的新包。这是不必要的,所以我想总是重新安装这个包。我该怎么做?
apt module
有 force=yes
选项。 Ansible documentation 说:
If yes
, force installs/removes.
但这似乎是强制接受任何警告。至少当我关闭它时,Ansible 会被阻止并发出关于不受信任来源的警告。 (存储库和服务器都在同一个 Intranet 中,所以这应该不是问题)
我可以用这个:
- 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
我正在使用 Ansible 从自定义存储库部署 .deb 包。
有时开发人员会忘记更改包号,因此存储库将包含旧版本的新包。这是不必要的,所以我想总是重新安装这个包。我该怎么做?
apt module
有 force=yes
选项。 Ansible documentation 说:
If
yes
, force installs/removes.
但这似乎是强制接受任何警告。至少当我关闭它时,Ansible 会被阻止并发出关于不受信任来源的警告。 (存储库和服务器都在同一个 Intranet 中,所以这应该不是问题)
我可以用这个:
- 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