--- - name: preperations and sanity checks hosts: "{{ install_hostname }}" gather_facts: no tasks: - name: check if the installee belongs to the kvmguests group fail: msg: "the host '{{ install_hostname }}' does not belong to the group 'kvmguests'" when: - "'kvmguests' not in group_names" - name: check if the host system belongs to the kvmhosts group fail: msg: "the host '{{ install_cooked.vm.host }}' does not belong to the group 'kvmhosts'" when: - "'kvmhosts' not in hostvars[install_cooked.vm.host].group_names" # TODO: add some more sanity checks - name: create temporary host group for vm host add_host: name: "{{ install_cooked.vm.host }}" inventory_dir: "{{ inventory_dir }}" group: _vmhost_ - name: basic installation hosts: _vmhost_ roles: - role: vm/install - name: wait for new vm to start up hosts: "{{ install_hostname }}" gather_facts: no tasks: ## TODO: find a better way to fetch host key of new VMs - name: disable ssh StrictHostKeyChecking for the next step set_fact: ansible_ssh_extra_args: -o StrictHostKeyChecking=no - name: clear all gathered facts meta: clear_facts - name: wait for vm to start up wait_for_connection: delay: 5 timeout: 120 - name: reenable StrictHostKeyChecking set_fact: ansible_ssh_extra_args: "" - name: apply basic VM configuration roles hosts: "{{ install_hostname }}" pre_tasks: - name: make sure to update cached facts setup: roles: - role: vm/grub when: install_distro in ['debian', 'ubuntu'] - role: vm/network when: install_distro in ['debian', 'ubuntu'] - role: vm/guest when: install_distro in ['debian', 'ubuntu'] - name: reboot and wait for VM come back hosts: "{{ install_hostname }}" gather_facts: no roles: - role: reboot-and-wait reboot_delay: 10 reboot_timeout: 120 - name: run host playbook vars: params: files: - "../{{ install_environment }}/{{ install_hostname }}.yml" - "../{{ install_environment }}/{{ install_playbook | default('common') }}.yml" import_playbook: "{{ q('first_found', params) | first }}"