来自另一台主机的 Ansible 事实

来自另一台主机的 Ansible 事实

我正在尝试从我的 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

相关内容