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

Nic*_*kin 7 deployment apt deb ansible

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

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

有一个force=yes选项apt moduleAnsible 文档说:

如果yes,则强制安装/删除。

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

我可以用这个:

- name: force-reinstall myservice
  shell: apt-get --reinstall install myservice
Run Code Online (Sandbox Code Playgroud)

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

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

tas*_*oor 6

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

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

- name: install package
  apt: name=package_name state=present update_cache=yes
Run Code Online (Sandbox Code Playgroud)

  • 是的 - 在同一任务中强制卸载和重新安装看起来像相同包的东西的方法违背了 Ansible 的理念,即它查看系统的状态,并且只在状态与系统不同的地方进行更改剧本定义。 (2认同)