次のように、私のansibleインベントリファイルに[all:vars]
の定義があります。
[all:vars]
ansible_Shell_type=bash
ansible_user=certain_user
ansible_ssh_common_args="-o ConnectionAttempts=10"
このような変数をansible.cfg
に移動して、すべてのホストのデフォルトを設定する予定です。それは単に同じように機能するのでしょうか、それとも考慮すべき状況はありますか?インベントリファイルから[all:vars]
を削除するために利用できる他の選択肢は何ですか?
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
サポートされている方法で同じことを実現するには、変数を/ group_vars/allに移動することを検討してください。
もちろん、これらの値はansible.cfg
で定義できますが、名前が異なるだけなので、事前に マニュアル を参照してください。
ansible_Shell_type
は、ansible.cfg
で executable
として定義できます。ansible_user
as remote_user
ansible_ssh_common_args
as ssh_args
構成ファイルで設定された値は、特定の設定によってオーバーライドされない限り、すべてのホストに適用されます。