Ansible - 使用来自其他主机的变量

时间:2018-02-22 20:18:35

标签: ansible

我有一个在Windows机器上执行脚本的剧本,它返回一个值,我必须在切换到本地主机后在我的剧本中重新使用。 切换回localhost后如何访问此值。 这是一个例子:

hosts: localhost
connection: local
gather_facts: no
tasks:
.
.
.
hosts: windows
gather_facts: no
tasks:
- name: Call PowerShell script
win_command: "c:\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe c:\\psl_scripts\\getData.ps1"
register: value_to_reuse

hosts: localhost
gather_facts: no
connection: local
tasks:
- name: debug store_name from windows host
  debug:
    var: "{{ hostvars[windows][value_to_reuse][stdout_lines] }}"

从另一台主机访问变量的正确语法是什么? 我收到错误消息:“msg”:“该任务包含一个带有未定义变量的选项。错误是:'windows'未定义

2 个答案:

答案 0 :(得分:1)

以下代码适用于with_items

  - name: print value_to_reuse
    debug:
      var: hostvars[item]['value_to_reuse']['stdout_lines']
    with_items: "{{ groups['windows'] }}"

相同的代码无需迭代即可运行:

 - name: print value_to_reuse
    debug:
      var: hostvars[groups['windows'][0]]['value_to_reuse']['stdout_lines']

答案 1 :(得分:0)

语法为:

- debug:
    var: hostvars['windows']['value_to_reuse']['stdout_lines']

三个错误:

  • 你应该引用字符串值
  • var参数采用变量名称,而不是模板(应该是msg - 参数值)
  • 给定示例中的
  • windows应该是主机名,因为所有事实都绑定到主机,而不是主机组