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

Ansible-使用来自其他主机的变量,ansible,Ansible,我有一个playbook,它在Windows框上执行一个脚本,该脚本返回一个值,切换到本地主机后,我必须在我的playbook中重新使用该值。 切换回本地主机后如何访问此值。 以下是一个例子: hosts: localhost connection: local gather_facts: no tasks: . . . hosts: windows gather_facts: no tasks: - name: Call PowerShell script win_command: "c:\\

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

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”未定义。语法为:

- debug:
    var: hostvars['windows']['value_to_reuse']['stdout_lines']
三个错误:

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

以下是与\u项一起工作的代码:

  - 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']

Hi@techraf。随着您的更改,输出中不再显示红色,但仍然不显示任何值:
“hostvars['windows']['value\u to\u reuse']['stdout\u lines']:”未定义变量!“
我执行了如下脚本:
hostvars['windows']
并且只返回空字符串:
“hostvars['windows']”:”
,这意味着没有为“windows”注册变量“主持人。如果我注册了,这怎么可能?您的主机名是windows还是主机组?我正在连接到windows服务器,并且有一个主机文件:
[windows]
1.1.1.1
组\u vars/windows.yml
文件,其中包含定义的清单变量,如下所述:Hi@techraf,这段代码使用
和_items
-name:print value _to _reusedebug:var:hostvars[item]['value _to _reuse']['stdout _line']和_items:{{groups['windows']}}}这是一个常见的需求,但除了这里,甚至在文档中,我都没有看到这个用例。例如,如果要在单个主机上创建特定用户,并访问该用户的公共SSH密钥,以便将其添加到游戏中的所有其他主机中,则必须使用此技术。