冪等性を設計する: changed_when・failed_when・creates
Pro会員限定上級約40分6レッスン
command や shell を使ったタスクは、何度流しても changed になったり、成功を失敗と取り違えたりします。2回流して冪等性を測り、終了コードで changed_when と failed_when を設計し、creates と pipefail で「本当の状態」を返すタスクに直します。
対象者: プレイブックを流すたびに changed が出て、本当の変更が埋もれている方 / 社内ツールを Ansible から呼んでいる方
前提知識: ハンドラー上級: 順序・listen・失われる通知 修了程度
この教材を終えると、できるようになること
- 同じプレイブックを2回流し、2回目に changed になるタスクを冪等でないタスクとして特定できるようになる。
- コマンドの終了コード(や出力)から changed_when を書き、何もしなかった実行を ok にできるようになる。
- コマンドの終了コードの意味を調べ、正常な非0(見つからない等)と本当の失敗を failed_when で区別できるようになる。
- command の creates / removes で、一度だけ実行すべきコマンドを冪等にでき、パスの誤りに気づけるようになる。
- shell のパイプで途中の失敗が隠れることを理解し、set -o pipefail と executable: /bin/bash で失敗を検出できるようになる。
修了後の姿: 大規模・複数チームで使えるAnsibleコードを設計・テスト・配布し、変更をエラーを出さずに安全に本番へ流せる自動化エンジニアへ。
Chapter 1changed と failed に「本当のこと」を言わせる
冪等性の測り方、終了コードによる判定、作成済みならスキップ、パイプの失敗を見逃さない書き方を練習します。
Chapter 2確認クイズ
冪等性の設計の理解度をチェック。