Ansible: group_names 変数拡張が機能しません。

Ansible: group_names 変数拡張が機能しません。

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]

おすすめ記事