I'm doing some cloud scripting that involves some work on one host, then
using the results to take action on another host. The hostname of the
second host is a dynamic result of that first bit, and won't be in my
inventory. I'd like to do as much of it as possible in ansible, and
`add_host` seems to be working. But I'm having trouble using a variable or
fact from one play as the `hosts` value for the next play.
Here's a test case that I've been working on: I've made it as simple as
possible.
# test.yml
- hosts: 127.0.0.1
tasks:
- set_fact: hostname_test='fubar'
- add_host: name='{{ hostname_test }}'
register: resp
- debug: msg='{{ resp }}'
- hosts: 127.0.0.1
tasks:
- debug: msg='resp={{ resp|default("None") }}'
- debug: msg='hostname_test={{ hostname_test|default("None") }}'
# end
I'd like that second play to start with `- hosts: hostname_test`. But that
results in "skipping: no hosts matched". At first I thought that meant
`add_host` wasn't working. But if I hardcode `hosts: fubar` for the second
play then ansible tries to connect as expected. However I need to determine
the second hostname as part of the first play. Running the code as above
suggests that neither `set_fact` nor `register` persists from the first
play to the next: both seem to be undefined.
Is it possible to use a hostname determined in one play as the hosts value
for the next play? If so, what am I doing wrong? Is there a better way to
persist new information from one play to the next?
Is it significant that ansible reports the first play under `127.0.0.1`, as
in the yml, but the second play shifts to `localhost`?
Thanks in advance for any help.
$ ansible --version
ansible 1.8.4
configured module search path = None
$ ansible-playbook -v test.yml
PLAY [127.0.0.1]
**************************************************************
GATHERING FACTS
***************************************************************
ok: [127.0.0.1]
TASK: [set_fact hostname_test='fubar']
****************************************
ok: [127.0.0.1] => {"ansible_facts": {"hostname_test": "fubar"}}
TASK: [add_host name='{{ hostname_test }}']
***********************************
ok: [127.0.0.1] => {"new_host": "fubar"}
TASK: [debug msg='{{ resp }}']
************************************************
ok: [127.0.0.1] => {
"msg": "{'invocation': {'module_name': u'add_host', 'module_args':
u\"name='fubar'\"}, 'new_host': u'fubar'}"
}
PLAY [127.0.0.1]
**************************************************************
GATHERING FACTS
***************************************************************
ok: [localhost]
TASK: [debug msg='resp=None']
*************************************************
ok: [localhost] => {
"msg": "resp=None"
}
TASK: [debug msg='hostname_test=None']
****************************************
ok: [localhost] => {
"msg": "hostname_test=None"
}
PLAY RECAP
********************************************************************
127.0.0.1 : ok=4 changed=0 unreachable=0
failed=0
localhost : ok=3 changed=0 unreachable=0
failed=0
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/28b00450-32f1-4c99-b336-372a6f6aa751%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.