我正在使用Ansible,我在尝试使用幂等shell执行时遇到了一些问题。我要做的第一件事是安装 python-apt软件包 ,因为我需要使用apt模块来安装其他软件包。但每次我运行我的 playbook 时,shell任务总会运行,我想让它成为幂等的。这是我的shell任务:
- name: install pyton-apt
shell: apt-get install -y python-apt
这是输出,始终运行上述任务:
$ ansible-playbook -i hosts site.yml
PLAY [docker] *****************************************************************
GATHERING FACTS ***************************************************************
ok: [10.0.3.240]
TASK: [docker | install pyton-apt] ********************************************
changed: [10.0.3.240]
TASK: [docker | install unzip] ************************************************
ok: [10.0.3.240]
PLAY RECAP ********************************************************************
10.0.3.240 : ok=3 changed=1 unreachable=0 failed=0
答案 0 :(得分:11)
您应该使用ansible apt
模块来安装python-apt
,它将是开箱即用的幂等词:http://docs.ansible.com/apt_module.html
E.g。
- name: install python-apt
apt: name=python-apt state=present
(注意使用apt模块应该在远程主机上自动安装python-apt
所以我不确定你为什么需要手动安装它,请参阅https://github.com/ansible/ansible/issues/4079)
编辑:如果由于某种原因你不能使用内置的apt
模块安装python apt,shell
模块提供creates
参数来帮助使其成为幂等的。
- name: install python-apt
shell: apt-get install -y python-apt >> /home/x/output.log creates=/home/x/output.log
这意味着如果/home/x/output.log
已经存在,shell模块将无法运行。