Ansible 1.3でroleのデフォルト変数と依存関係が設定できるようになったので、変数の優先度を調べてみた。
優先度が高い順から下記のようになっている。
- factsやregisterで設定される値
- roleにパラメータとして渡した値
- vars_file
- extra_varとしてコマンドラインから渡した値
- varsセクションで設定した値
- roles/x/vars/main.ymlで設定した値
- inventory_fileでホストに設定した値
- inventory_fileでグループに設定した値
- roles/x/defaults/main.ymlで設定した値
roles/x/meta/main.ymlで他のroleへの依存を設定した場合には、そのroleに設定した変数の
値も読み込まれる。(優先順位としては呼び出し元のroleの変数と同じで、呼び出し元のroleでも値が設定されていた場合には呼び出し元の値が優先されるようだ。)
複数のRoleで同じ変数名を使っているとハマることがあるかも。