Ansibleでは、sitグループに属するサーバーにコピーされるsshd_configを作成しました。
[sit]
192.168.18.10
192.168.18.11
192.168.18.12
192.168.18.13
192.168.18.14
192.168.18.15
- name: Deploy SSHD_Configuration
tags: new
template:
src: "~/ansible_files/roles/common/base/templates/{{group_names}}/sshd_config.j2"
dest: "/etc/ssh/sshd_config"
owner: root
group: root
mode : 0600
notify:
- "restart sshd service"
しかし、実行するとこのエラーが発生します
fatal: [192.168.18.10]: FAILED! => {"changed": false, "msg": "Could not find or access '~/ansible_files/roles/common/base/templates/[u'sit']/sshd_config.j2' on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"}
これで、デプロイする必要があるさまざまなsshd_configurationファイルを持つ複数の環境があります。私の考えは特別なホスト変数を使用することでしたが、それを使用する方法が見つからなかったので、ansibleドキュメントで現在のホストをチェックするgroup_namesを見つけました。ただし、この変数は[u'sit']に展開されます。
これを克服する方法やより良い方法はありますか?
ありがとう
ベストアンサー1
コメントの形式がうまく指定されていないため、回答として投稿します。
あなたが提供したデータを考慮すると、次のようになります。
[sit]
192.168.18.10
192.168.18.11
192.168.18.12
192.168.18.13
192.168.18.14
192.168.18.15
- name: Deploy SSHD_Configuration
tags: new
template:
src: "~/ansible_files/roles/common/base/templates/{{item}}/sshd_config.j2"
dest: "/etc/ssh/sshd_config"
owner: root
group: root
mode : 0600
with_items: "{{group_names}}"
notify:
- "restart sshd service"
これは複数のリストに適用されます。このようなリストがある場合は、次を使用して最初の要素を参照することもでき[sit]
ます。group_names[0]