check_mode に対応したプレイブックとモジュール
Pro会員限定上級約40分6レッスン
--check は本番に流す前の大事な予告ですが、プレイブックが対応していなければ途中で落ちたり、予告に出ない変更が残ったりします。check_mode: false / true の意味、対応しないモジュールの見分け方、自作モジュールの supports_check_mode、秘密を出さない diff: false を扱います。
対象者: --check が途中で失敗して困っている方 / 自作モジュールを書いている方
前提知識: 冪等性を設計する: changed_when・failed_when・creates 修了程度
この教材を終えると、できるようになること
- チェックモードで command がスキップされ、その結果を使う後続のタスクが失敗する仕組みを説明できるようになる。
- タスクの check_mode: true / false の意味を正しく説明し、読み取り専用のタスクに check_mode: false を付けられるようになる。
- -v の出力から「does not support check mode」でスキップされたタスクを見つけ、予告に出ない変更があることを読み取れるようになる。
- 自作モジュールの supports_check_mode と module.check_mode の分岐の役割を説明し、チェックモードに対応させられるようになる。
- --diff で秘密情報が表示されることを理解し、タスク単位の diff: false(と no_log)で防げるようになる。
修了後の姿: 大規模・複数チームで使えるAnsibleコードを設計・テスト・配布し、変更をエラーを出さずに安全に本番へ流せる自動化エンジニアへ。
Chapter 1--check を「信頼できる予告」にする
チェックモードで止まる理由と、読み取りタスク・対応しないモジュール・自作モジュール・差分の秘密を順に扱います。
- --check で落ちるプレイブックスキップされたタスクの register の stdout は空の文字列約7分(有料会員限定)
- 読み取りタスクは check_mode: falsecheck_mode: true は「常にチェックモード」の意味約7分(有料会員限定)
- チェックモードに対応しないモジュールを見分けるskipping は「何もしない」ではない約7分(有料会員限定)
- 自作モジュールをチェックモードに対応させるsupports_check_mode と、check_mode の分岐はセット約9分(有料会員限定)
- 差分に秘密を出さない(diff: false)--diff の予告に DB のパスワードが出ている約7分(有料会員限定)
Chapter 2確認クイズ
check_mode の理解度をチェック。