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