如何在 Ansible 中创建幂等 shell 任务

问题描述 投票:0回答:1

我正在使用 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 
ansible
1个回答
11
投票

您应该使用 ansible

apt
模块来安装
python-apt
,它将是开箱即用的幂等:http://docs.ansible.com/apt_module.html

例如

- 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 模块将不会运行。

© www.soinside.com 2019 - 2024. All rights reserved.