Ansible2 変数の優先度
意外と「Ansible 変数 優先度」とかでググッても出てこないので、こちらにメモします
内容は、ドキュメントVariables — Ansible Documentationで説明されてるものを逆順にして日本語化しただけです。
逆順にしたのは、単純にそのほうが自分にとって見やすいからです。
Ansible2 変数の優先度ランキング
つよい(確信)
- extra vars
- タスクのvars
- ブロックのvars
- ロールのvars/includeした変数ファイル
- set_facts
- 処理でregisterした変数
- 処理内vars_filesで指定のファイルで定義された変数
- 処理内vars_promptでプロンプトから渡された変数
- 処理内のvarsで定義された変数
- ファクト(setupで拾ってきた値)
- Playbookで定義されたhost_vars
- Playbookで定義されたgroup_vars
- インベントリで定義されたhost_vars
- インベントリで定義されたgroup_vars
- インベントリで定義された変数
- ロールのデフォルト(/roles/*/defaults/main.yml)
まとめ
例外はありますが、
- 要素で定義した変数は要素の集合で定義した変数より強い
- タスク > vars > 処理(Play) > Playbook > インベントリ > デフォルト
って印象です。
そんなわけで
「あれ?varsで定義した変数、group_varsで上書きしてるのにな〜」
みたいなことにならない様に、しっかり頭に入れておきたい所です。