我有一个在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'未定义
答案 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
应该是主机名,因为所有事实都绑定到主机,而不是主机组