--- - name: Set facts about infra VMs gather_facts: false hosts: "{{ infra_vm_limit | default('infra-vms') }}" tags: - always tasks: - name: Group virtual machines by hypervisor group_by: key: infra_vms_{{ infra_vm_hypervisor }} # FIXME(mgoddard): Is delegate_to necessary? delegate_to: "{{ infra_vm_hypervisor }}" changed_when: false - name: Ensure defined infra VMs are deployed hosts: hypervisors max_fail_percentage: >- {{ infra_vm_provision_max_fail_percentage | default(kayobe_max_fail_percentage) | default(100) }} tags: - infra-vm-provision tasks: - import_role: name: infra-vms vars: infra_vm_vms: "{{ groups['infra_vms_' ~ inventory_hostname ] | default([]) }}" - name: Wait for infra VMs to be accessible hosts: "{{ infra_vm_limit | default('infra-vms') }}" gather_facts: false max_fail_percentage: >- {{ infra_vm_provision_max_fail_percentage | default(kayobe_max_fail_percentage) | default(100) }} tags: - infra-vm-provision tasks: - name: Wait for SSH access to the infra VM wait_for: host: "{{ hostvars[inventory_hostname].ansible_host }}" port: 22 state: started # NOTE: Ensure we exceed the 5 minute DHCP timeout of the eth0 # interface if necessary. timeout: 360 delegate_to: localhost