---
- 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
- hosts: '{{ ip }}'
it always says: skipping: no hosts matched
---
- 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: vm
# Filter out exact vm name
- name: Define vm variable
set_fact: vmname="{{ (vm.stdout.split(' ')[2]) | regex_replace('},$','') }}"
delegate_to: localhost
- name: Wait for running vm
shell: 'curl https://vm.example.nl/api/{{ vmname }}'
delegate_to: localhost
register: result
until: result.stdout.find("running") != -1
retries: 15
delay: 20
# This tasks makes sure the newly created vm is in the inventory file
- name: Regenerate vm inventory
shell: /scripts/generate_vm_invantory.sh
delegate_to: localhost
# Continue play on newly created vm, the problem is here. vmname is not getting passed to hosts:
- hosts: '{{ vmname }}'
# Roles to configure newly created vm
roles:
- common
- apt-updates
- webserver
hosts: '{{ vmname }}'
Agreed with James, dynamically adding hosts to groups is the way to go. I believe that the hosts: lines are evaluated before the playbook is run, so the only variables you can use there are ones set with -e vmname=something
On 20 January 2015 at 18:04, James Martin <jma...@ansible.com> wrote:
See my original response. You'll need to use the add_host module to add {{ vmname }} to the inventory if you want to use it on the next play. Also, you playbook will be much cleaner if you use the URI module rather than shelling out to curl.
- James
On Tuesday, January 20, 2015 at 10:58:23 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:
vm
# Filter out exact vm name
- name: Define vm variable
set_fact: vmname="{{ (vm.stdout.split(' ')[2]) | regex_replace('},
,'') }}"
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/357a7e9c-f468-47cc-b038-8b7a228e2584%40googlegroups.com.--
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 ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.