変数の優先順位
Pro会員限定中級約45分6レッスン
同じ変数が group_vars・host_vars・プレイブック・-e に書かれていたら、どれが勝つのか。優先順位の仕組みを ansible-inventory と --check --diff で確かめ、-e @file での上書き、default フィルタ、未定義変数エラーの対処まで身につけます。
対象者: 「設定した値と違う値が適用された」経験がある方 / 環境ごとに値を切り替えたい方
前提知識: ロールで構造化する 修了程度
この教材を終えると、できるようになること
- group_vars/all・group_vars/<グループ>・host_vars/<ホスト> の優先順位と、--host での確認方法を説明できる
- プレイブックの vars より -e が優先されることを、差分出力で確認できる
- -e @ファイル で複数の変数をまとめて渡し、結果を差分で確認できる
- {{ var | default(値) }} の動きと使いどころを説明できる
- 'x' is undefined エラーから変数名を特定し、-e で与えて実行できる
修了後の姿: ロールで構造化し、Vaultで機密を守り、タグ・ローリング適用・エラー制御を使った本番想定のAnsible運用ができるようになります。
Chapter 1どの値が勝つのか
インベントリ変数 → プレイブック変数 → extra-vars の順に、優先順位を実験で確かめます。
- インベントリ変数 — all < グループ < ホストgroup_vars / host_vars の中身と、ホストごとに合成された結果を確認します。約10分(有料会員限定)
- -e(extra-vars)は最強 — 何より優先されるweb.yml の vars を -e で上書きし、--check --diff で差分として確かめます。約9分(有料会員限定)
- -e @file — 変数をファイルで渡す上書き用の変数ファイルを作り、-e @override.yml で読み込ませます。約8分(有料会員限定)
- default フィルタ — 無いときの値を決めておくテンプレートの default フィルタで、変数が無いホストにも既定値が入ることを確認します。約9分(有料会員限定)
- 未定義変数のエラーを読んで、-e で解決するundefvar.yml の失敗からエラーメッセージを読み、不足している変数を -e で渡して成功させます。約9分(有料会員限定)
Chapter 2確認クイズ
変数の優先順位の理解を確認します。