Ansibleでgroup_varsが読み込まれないと思ったら
Ansibleでgroup_varsが読み込まれないとしばらく悩んでいたら、デフォルトでは変数を優先度に従って上書きするようだ。
$ cat group_vars/db.yml mysql: root: password: password $ cat host_vars/db1.yml mysql: cnf: server_id: 100
上記の場合、host_varsの方が優先度が高いため、mysqlが上書きされ、mysql.rootは未定義となる。
環境
- Ansible 2.8
対策
Ansibleの設定hash_behaviourをmergeにする。
$ cat ansible.cfg [defaults] hash_behaviour = merge
上記によって、hashがマージされるので、mysql.rootが上書きされることはなくなる。 ただし、Ansibleとしてはおすすめしない設定とのこと。