Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ansible中生成幂等shell_Ansible_Ansible Playbook - Fatal编程技术网

如何在Ansible中生成幂等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.

我正在使用Ansible,我在尝试将幂等函数作为shell执行时遇到了一个小问题。我要做的第一件事是安装python apt软件包,因为我需要它来使用apt模块来安装其他软件包。但是每次我运行我的剧本时,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 

您应该使用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