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]

관련 정보