我正在尝试从我的 ansible 剧本中的另一个主机获取事实:
- hosts: localhost
tasks:
- site_facts: name={{ var }}
- hosts: "{{ apphost }}"
tasks:
- shell:
command: docker inspect --format='\{\{.Image\}\}' {{ dbname }}
register: imagehash
- hosts: some_host
tasks:
- debug: var=hostvars[apphost].inventory_hostname
- debug: var=hostvars['localhost'].inventory_hostname
棘手的部分是,通过 --extra-vars 传递的“apphost”变量包含 ec2 上主机的标签名称。
但是该hostvars
列表使用 IP 地址作为关键字,因此我收到此错误:
fatal: [192.168.XX.XX] => Failed to template {{hostvars[apphost].inventory_hostname}}: host not found: tag_Name_docker1
有什么想法我应该如何从这个主持人那里获取事实?
答案1
正确的变量似乎是
- debug: var=hostvars[groups[apphost][0]].inventory_hostname
代替
- debug: var=hostvars[apphost].inventory_hostname