---
-- name: Basic Installation
- hosts: "{{ vmname }}"
+- 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: Gather facts of vm host
+ - name: make sure to update cached facts
setup:
- delegate_to: "{{ vm_install.host }}"
- delegate_facts: yes
roles:
- - role: vm-install
+ - role: vm/grub
+ - role: vm/network
+ - role: vm/guest
-- import_playbook: "host_playbooks/{{ vmname }}.yml"
+- import_playbook: "host_playbooks/{{ hostname }}.yml"
-- name: Reboot and wait for VM come back
- hosts: "{{ vmname }}"
+- name: reboot and wait for VM come back
+ hosts: "{{ hostname }}"
gather_facts: no
roles:
- role: reboot-and-wait