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) }}"
但是您在剧本中使用了两个剧本。
您也可以尝试将文件复制到机器上说明事实。
如何访问其他主机的变量?我想在 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) }}"
但是您在剧本中使用了两个剧本。 您也可以尝试将文件复制到机器上说明事实。