4

私は Ansible を使用していますが、シェル実行を冪等にしようとして少し問題があります。他のパッケージをインストールするために apt モジュールを使用する必要があるため、最初にpython-apt パッケージをインストールします。しかし、プレイブックを実行するたびに、シェル タスクが常に実行され、冪等にしたいと考えています。これが私のシェルタスクです:

- 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 
4

1 に答える 1

11

ansibleaptモジュールを使用して をインストールする必要python-aptがあります。これは、そのままでべき等になります

例えば

- 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既に存在する場合は実行されないということです。

于 2014-07-04T15:29:03.307 に答える