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]