web-dev-qa-db-ja.com

何かが変更されたことを報告するAnsibleタスクの重要性は何ですか?

プロセスがポート8080でリッスンしているかどうかをチェックするタスクがあり、終了コードがゼロでない場合にのみ、メッセージでfailを実行しますか?.

サービスが実行されている場合、ステータスが変更されたことが報告されます。 okと言ってほしい。 changedステータスは実際にAnsibleで何を意味しますか?

21
socgen hacker

ターゲット上の何かに依存しているものは、それが何かをエコーする単なるシェルコマンドであっても、実行時に「変更済み」ステータスを取得します。

「変更済み」ステータスを抑制するには、タスクに次の行を追加します。

changed_when: false

これとその他の関連事項は このansible docページ にリストされています。

11
wurtel

Ansibleタスクは べき等 である必要があります。例えば。タスクが何も変更しない場合、okではなくchangedを返す必要があります。ほとんどの組み込みモジュールとタスクはすでにありますが、commandShellなどのタスクについては、少し手助けする必要があります。

純粋にチェックを行い、何も変更しないタスクの場合は、以下を追加する必要があります。

changed_when: False
always_run: yes

後者の場合、タスクは チェックモード でも実行できます。

完全を期すために、このようなタスクは通常、実際の変更を行う別のタスクと組み合わされます。例:

- command: check command that returns true when no change needed
  register: result
  changed_when: False
  always_run: yes
- command: modify command
  when: result.rc != 0
29
user1338062