web-dev-qa-db-ja.com

Ansibleのすべてのホストのデフォルト変数を定義する適切な方法

次のように、私のansibleインベントリファイルに[all:vars]の定義があります。

[all:vars]
ansible_Shell_type=bash
ansible_user=certain_user
ansible_ssh_common_args="-o ConnectionAttempts=10"

このような変数をansible.cfgに移動して、すべてのホストのデフォルトを設定する予定です。それは単に同じように機能するのでしょうか、それとも考慮すべき状況はありますか?インベントリファイルから[all:vars]を削除するために利用できる他の選択肢は何ですか?

9
Akif

ansible.cfgは構成ファイルであり、インベントリではありません。変数をそこに入れることはできません。

[all:vars]は、インベントリファイル内のグループ(この場合は特別なグループall)のグループ変数を定義するための構文です。

メインインベントリファイルから変数定義を分割したい場合(ちなみに、これは推奨される方法です!)、この章を読むことをお勧めします: ホストおよびグループ固有のデータの分割

抜粋:

変数をインベントリファイルに直接保存することに加えて、ホスト変数とグループ変数をインベントリファイルに関連する個々のファイルに保存できます。

インベントリファイルのパスが次のとおりであると仮定します。

/etc/ansible/hosts

ホストの名前が「foosball」で、グループが「raleigh」と「webservers」の場合、次の場所にあるYAMLファイルの変数がホストで利用できるようになります。

/etc/ansible/group_vars/raleigh # can optionally end in '.yml', '.yaml', or '.json'
/etc/ansible/group_vars/webservers
/etc/ansible/Host_vars/foosball
4

サポートされている方法で同じことを実現するには、変数を/ group_vars/allに移動することを検討してください。

9
LuckyAshnar

もちろん、これらの値はansible.cfgで定義できますが、名前が異なるだけなので、事前に マニュアル を参照してください。

構成ファイルで設定された値は、特定の設定によってオーバーライドされない限り、すべてのホストに適用されます。

2
techraf