Ansible:如何访问其他主机的变量?

Ansible: How can I access a variable of other host?

如何访问其他主机的变量?我想在 working_host.

上访问本地主机的 slack_token 变量
- hosts: localhost
  vars:
    slack_token: 123123123
  tasks:
    - block:
      - name: test
        debug: msg="{{ slack_token }}"

- hosts: "{{ working_host }}"
  vars:
    slack_token: "{{ hostvars['localhost']['slack_token'] }}"                                                                                    
  tasks:
    - block:
      - name: test2
        debug: msg={{ slack_token }}

错误信息:

fatal: [localhost]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: {{ hostvars['localhost']['slack_token'] }}: 'dict object' has no attribute 'slack_token'

有什么想法吗?

要从任何地方访问 slack_token,可以:

  • 将其作为额外变量传递给 -e slack_token=zzzz
  • all
  • 下的清单中定义它

刚刚在我之前的 post 中回答了一个有点相同的问题。

这是我使用的:

 set_fact:
    myVar: "{{ hostvars[groups['all'][0]]['slack_token'] | default(False) }}"

但是您在剧本中使用了两个剧本。 您也可以尝试将文件复制到机器上说明事实。