Ansible - use variable from another host

15 views
Skip to first unread message

Larry Bakun

unread,
Feb 22, 2018, 3:25:27 PM2/22/18
to Ansible Project
I have a playbook that executes a script on a Windows box that returns a value that I have to re-use later on in my playbook after switching to the localhost. How can I access this value after switching back to localhost. Here is an example:


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] }}"



What is the correct syntax accessing a variable from another host? I'm receiving error message: "msg": "The task includes an option with an undefined variable. The error was: 'windows' is undefined

Brian Coca

unread,
Feb 22, 2018, 3:42:38 PM2/22/18
to Ansible Project
hostvars requires a string that is a host name: hostvars['<hostname>']
, if the 'windows' is a hostname you can do
hostvars['windows']['varname'] .. if it is a group , you cannot do
this, you need to use a specific hostname.

But if you just want any host in the group you can do :
hostvars[groups['windows'][0]]['value_to_reuse']['stdout_lines']

Also note that if you don't quote something it will be interpreted as
a variable that contains the name, not the variable name you want
(list indecies are an exception as they are just numbers).




--
----------
Brian Coca
Reply all
Reply to author
Forward
0 new messages