PlayBookに問題がない場合にのみAnsible PlayBookを実行する方法は?

PlayBookに問題がない場合にのみAnsible PlayBookを実行する方法は?

ansible-playbook example.yml --check私は私のプレイブックに問題のある部分があるかどうかを知らせるこのコマンドについて学びました(Ansibleが識別できる範囲内)。

私はこのコマンドをansible-playbook example.ymlsoと組み合わせて、以前のテストでエラーが聞こえない場合にのみ自分のプレイブックを実行する必要があると思います。

こんな思いをしたのですが、正しいのかわかりません。

ansible-playbook example.yml --check && ansible-playbook example.yml

&&こうすることで、チェックが正しく行われた場合にのみ(エラーが見つからない場合)、2番目のコマンド(プレイブックの実際の実行)が発生することを保証すると思います。

そうですか?それ以外の場合は、エラーがない場合にのみスクリプトを再生できるようにする正しい方法は何ですか?

ベストアンサー1

私のテストではansible-playbook --syntax-check設定されました。終了コードスクリプトの文法エラーに適切に基づいています。良いサンプルスクリプトと悪いサンプルスクリプトの両方が示されているように動作するという私の言葉を受け入れることができます。

良い文書:

$ ansible-playbook --syntax-check good-example.yaml
 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match
'all'


playbook: good-example.yaml
$ echo $?
0

...そして破損したファイル:

$ ansible-playbook --syntax-check bad-example.yaml
 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match
'all'

ERROR! 'xhosts' is not a valid attribute for a Play

The error appears to have been in '/.../bad-example.yaml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
- xhosts: all
  ^ here

$ echo $?
4

したがって、提案した方法で構文チェックを実行できると思います。

ansible-playbook --syntax-check example.yml && ansible-playbook example.yml

...構文チェックセクションから出力を削除する方が静かです。

ansible-playbook --syntax-check example.yml >/dev/null 2>&1 && ansible-playbook example.yml

メモ:入力を減らすために、すべてを関数でラップできます。

safe-ansible() {
  ansible-playbook --syntax-check "$@" > /dev/null 2>&1 &&
  ansible-playbook "$@"
}

おすすめ記事