Ansible-使用来自其他主机的变量
我有一个playbook,它在Windows框上执行一个脚本,该脚本返回一个值,切换到本地主机后,我必须在我的playbook中重新使用该值。 切换回本地主机后如何访问此值。 以下是一个例子: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:\\
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应为主机名,因为所有事实都绑定到主机,而不是主机组
- 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密钥,以便将其添加到游戏中的所有其他主机中,则必须使用此技术。