--- - name: preperations and sanity checks hosts: "{{ hostname }}" gather_facts: no tasks: - name: setup variables set_fact: network_cooked: "{{ network }}" install_cooked: "{{ install }}" - name: create temporary host group for vm host add_host: name: "{{ vm_host }}" inventory_dir: "{{inventory_dir}}" group: _vmhost_ # TODO: add some sanity checks - import_playbook: remove_known_hosts.yml - name: basic installation hosts: _vmhost_ roles: - role: vm/install - name: wait for new vm to start up hosts: "{{ 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: wait for vm to start up wait_for_connection: delay: 5 timeout: 120 - name: reenable StrictHostKeyChecking set_fact: ansible_ssh_extra_args: "" - name: Apply VM configuration roles hosts: "{{ hostname }}" pre_tasks: - name: make sure to update cached facts setup: roles: - role: vm/grub - role: vm/network - role: vm/guest - import_playbook: "host_playbooks/{{ hostname }}.yml" - name: reboot and wait for VM come back hosts: "{{ hostname }}" gather_facts: no roles: - role: reboot-and-wait reboot_delay: 10 reboot_timeout: 120