在为 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状态结束,并且不会重新安装软件包。