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.

Reply via email to