如何解决从 Ansible 中的 inventory_hostname 获取第 n 个主机
以下是我的库存主机文件的样子。
[all_hosts]
server1 USER=user1
server3 USER=user2
server5 USER=user1
…..
在我的 ansible playbook 中,我希望始终引用第一个主机,即 server1
和 USER=user1
来执行 copy
任务,因为要复制的文件始终位于inventory_hostname
。考虑-e domain_home=all_hosts
---
- name: "Play 1"
hosts: "{{ domain_home }}"
gather_facts: false
vars:
ansible_ssh_extra_args: -o StrictHostKeyChecking=no
tasks:
- debug:
msg: "Although the inventory hostname is {{ inventory_hostname }} the first host will always be <need help get first host> and the user will always be <need help get user for first host>
你能推荐一下吗?
解决方法
groups["all_hosts"]
事实按其在 .ini 文件中的位置排序,因此您只需要求第 [0]
项(或使用 | first
过滤器),然后hostvars dict
类似地由它们的名称索引
- debug:
msg: >-
Although the inventory hostname is {{ inventory_hostname }}
the first host will always be {{ host0 }}
and the user will always be {{ hostvars[host0].USER }}
vars:
host0: '{{ groups[domain_home][0] }}'
将来,为了帮助您自学钓鱼,- debug: var=vars
和 - debug: var=hostvars
可以说明在手册中的任何点都可以查看哪些信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。