web-dev-qa-db-ja.com

ansible Host_varsはどのように機能しますか?

I リポジトリを作成 シナリオを再現します。

基本的に、ホストにインベントリをロードしています。インベントリごとにホストごとの値を問題なくオーバーライドできますが、Host_varsを試して利用したいと思います。

ホスト変数がホストにどのように一致するかについては、100%明確ではありません。例として ansible repo を読みましたが、文書化されたとおりに動作するようには見えないので、セットアップの精査を探しています。

サンプルリポジトリでansible-playbook -i ansible.inventory site.yml -clocalコマンドを実行すると、Host_vars/{{ ansible_hostname }}ファイルが読み取られ、varsで設定されたものがすべて上書きされることが予想されますが、それは発生していないようです。

誰かが私に私たちが間違っているところを見ることができるように、実際の例を教えてくれますか?

26
mjallday

ドキュメンテーションはこのトピックに関してあまり具体的ではないため、現在のバージョンのAnsibleでの変数の優先順位は次のとおりです。

  1. コマンドラインで設定された変数 -e foo = set_on_cmd_line
  2. に設定された変数 vars_files: 劇中のブロック
  3. に設定された変数 vars: 劇中のブロック
  4. に設定された変数 Host_vars /
  5. に設定された変数 group_vars /
  6. ロールのデフォルト変数 roles /.../ defaults/main.yml

ここでは、 ansible docsで、優先度の低い順から大きい順(最後にリストされた変数が優先順位付けされている)を見ることができます。

Host_varsおよびgroup_varsは、デフォルトのオーバーライドではなく、デフォルトに近いと考える必要があります。同じ変数が設定されている場合 vars_files: block 例で行うように それが優先されます。

33
jarv