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

时间:2016-12-13 13:21:33

标签: ansible ansible-playbook

如何访问其他主机的变量?我想在working_host上访问我的localhost的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 }}

错误消息:

  

致命:[localhost]:失败! => {"失败":是的," msg":"该字段   ' ARGS'具有无效值,似乎包含一个变量   未定义。错误是:{{hostvars [' localhost'] [' slack_token']   }}:' dict object'没有属性' slack_token'

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

在我之前的帖子中回答了一个相同的问题。

这是我使用的:

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

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

答案 1 :(得分:1)

要从任何地方访问slack_token,请执行以下操作:

  • 使用-e slack_token=zzzz
  • 将其作为额外变量传递
  • all群组
  • 下的广告资源中进行定义
相关问题