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.