限制 ansible 安装任务仅在软件包不存在时才安装的最佳方法是什么

限制 ansible 安装任务仅在软件包不存在时才安装的最佳方法是什么

在为 vagrant box 创建剧本时,如果软件包已经安装,我想跳过安装步骤。这似乎是一种常见的情况,但在条件文档据我所知。

我在测试期间多次运行剧本,并希望有条件地安装软件包,这样我就不必继续运行我知道正在运行的任务,例如

- name: Install useful packages
  yum: name={{ item }} state=present
  with_items:
    - "@development-tools"
    - git
    - curl
    - htop

我如何在此处添加条件,仅当上述软件包尚未安装时才安装它们?我可以使用其他状态吗?还是我需要在 shell 中手动运行某些程序来检查它们是否已先安装?例如使用yum list installed <packagename>或的某些程序yum info <packagename>。我宁愿不必为每个包创建一个任务,因为当有很多包需要安装时,这会变得很麻烦

答案1

Ansible 是幂等的。您可以根据需要多次运行 yum 模块。如果没有要安装的内容,则该任务将以changed=false状态结束,并且不会重新安装软件包。

相关内容