我从库存文件中获取rhel
下ansible_user
的值时遇到问题。以下是我尝试获取的几种方法,每次它都说未定义的rhel
。关于如何找回它有什么建议吗?
- set_fact:
SSHUSER: "{{ hostvars.[rhel].ansible_user }}"
- set_fact:
SSHUSER: "{{ rhel.ansible_user }}"
---
all:
vars:
project: test
hosts:
children:
test_vm:
hosts: 10.10.10.4
example_vm:
hosts: 10.10.10.5
ubuntu:
children:
test_vm:
vars:
os: ubuntu
ansible_user: "testuser"
rhel:
children:
example_vm:
vars:
os: rhel
ansible_user: "exampleuser"
您引用的rhel
是一个组,而不是一个主机—一个主机可能属于多个组。为了实现"组中某些成员的hostvars",您想要的表达式是"组"。为jinja2表达式:{{ hostvars[groups["rhel"][0]].ansible_user }}
其中groups["rhel"]
是可用库存主机名的字符串列表,如果假设它们都有等效的ansible_user
,那么应该安全的只是抓取第一个,即groups["rhel"][0]
或更详细但可能更清晰的groups["rhel"]|first
hostvars
,而不是我们自己的;由于hostvars
是由可见的库存主机名索引的dict[str, dict]
,我们可以将该值插入hostvars
字典中作为hostvars[groups["rhel"][0]]
,这是每个hostvar,然后hostvars[groups["rhel"][0]].ansible_user
返回您请求的ansible_user
事实