Ansible:从库存文件中获取变量值



我从库存文件中获取rhelansible_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事实

相关内容

  • 没有找到相关文章

最新更新