Ansible:group_names 变量扩展不起作用

Ansible:group_names 变量扩展不起作用

在ansible中,我创建了一个sshd_config,它将被复制到属于sit组的服务器上

[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]引用第一个元素

相关内容