如何在Ansible中生成幂等shell
我正在使用Ansible,我在尝试将幂等函数作为shell执行时遇到了一个小问题。我要做的第一件事是安装python apt软件包,因为我需要它来使用apt模块来安装其他软件包。但是每次我运行我的剧本时,shell任务总是运行,我想使它幂等。以下是我的shell任务:如何在Ansible中生成幂等shell,ansible,ansible-playbook,Ansible,Ansible Playbook,我正在使用Ansible,我在尝试将幂等函数作为shell执行时遇到了一个小问题。我要做的第一件事是安装python apt软件包,因为我需要它来使用apt模块来安装其他软件包。但是每次我运行我的剧本时,shell任务总是运行,我想使它幂等。以下是我的shell任务: - name: install pyton-apt shell: apt-get install -y python-apt 以下是输出,始终运行上述任务: $ ansible-playbook -i hosts site.
- 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
您应该使用ansible
apt
模块来安装python apt
,这将是一个开箱即用的幂等函数:
例如
(注意:使用apt模块应在远程主机上自动安装python apt
,因此我不确定为什么需要手动安装,请参阅)
编辑:如果由于某种原因无法使用内置的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模块将不会运行。撰写本文时,人们报告说apt
模块仍然没有自动安装pyton apt
依赖项。
- name: install python-apt
shell: apt-get install -y python-apt >> /home/x/output.log creates=/home/x/output.log