Assuming your first task returns an ip address, if you want to reference 
it, you'd need to use {{ ip.stdout }}.  Alternately, you could use 
the http://docs.ansible.com/uri_module.html instead of using curl, and you 
could just use {{ ip }}.

You'll also have to add it to the inventory before you could use it on the 
following play, see the http://docs.ansible.com/add_host_module.html module.


If you want extra credit, write a module for your API that provisions 
instances and a dynamic inventory script :).

- James


On Tuesday, January 20, 2015 at 8:37:03 AM UTC-5, Piet83 wrote:
>
> ---
> - hosts: all
>
>   pre_tasks:
>
> # Task creates a vm through an api. Register output with vm name
>   - name: Create vm from emplate
>     command:  'curl https://vm.example.nl/api/create'
>     delegate_to: localhost
>     register: ip
>
> # Continue play on newly created vm 
> - hosts: '{{ ip }}'
>
> # Roles to configure newly created vm
>   roles:
>     - common
>     - apt-updates
>     - webserver
>  
>
> I'm trying to create a playbook to provision a virtual machine and apply 
> some roles to that vm without knowing name or ip. When provisioning the vm 
> through our API it spits out the vmname and ipadress to the stdout. When I 
> register the stdout to a variable I can't pass it as you see above to: - 
> hosts: '{{ ip }}'
> it always says: skipping: no hosts matched
>
> Is the above possible? Or is it possible to use delegate_to for a role. 
> Maybe there a other ways? 
>

-- 
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/aeacdca8-f97a-47ab-a418-c486eb5f4a7a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to