a97230f5bce844a2719363f983588456f3168ab3
[noc.git] / ansible / roles / vm / install / tasks / main.yml
1 ---
2 - name: create disks for vm
3   with_dict: "{{ hostvars[vmname].vm_install_cooked.disks.virtio | default({}) | combine(hostvars[vmname].vm_install_cooked.disks.scsi | default({})) }}"
4   lvol:
5     vg: "{{ item.value.vg }}"
6     lv: "{{ item.value.lv }}"
7     size: "{{ item.value.size }}"
8
9 - name: check if vm already exists
10   virt:
11     name: "{{ vmname }}"
12     command: info
13   register: vmhost_info
14
15 - block:
16     - name: destroy exisiting vm
17       virt:
18         name: "{{ vmname }}"
19         state: destroyed
20
21     - name: wait for vm to be destroyed
22       wait_for_virt:
23         name: "{{ vmname }}"
24         states: shutdown,crashed
25         timeout: 5
26
27     - name: undefining exisiting vm
28       virt:
29         name: "{{ vmname }}"
30         command: undefine
31
32   when: vmname in vmhost_info
33
34 - name: enable installer in VM config
35   set_fact:
36     run_installer: True
37
38 - name: define new installer vm
39   virt:
40     name: "{{ vmname }}"
41     command: define
42     xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
43
44 - name: start vm
45   virt:
46     name: "{{ vmname }}"
47     state: running
48
49 - name: wait for installer to start
50   wait_for_virt:
51     name: "{{ vmname }}"
52     states: running
53     timeout: 10
54
55 - debug:
56     msg: "you can check on the status of the installer running this command 'virsh console {{ vmname }}' on host {{ inventory_hostname }}."
57
58 - name: wait for installer to finish or crash
59   wait_for_virt:
60     name: "{{ vmname }}"
61     states: shutdown,crashed
62     timeout: 1800
63   register: installer_result
64   failed_when: installer_result.failed or installer_result.state == "crashed"
65
66 - name: undefining installer vm
67   virt:
68     name: "{{ vmname }}"
69     command: undefine
70
71 - name: disable installer in VM config
72   set_fact:
73     run_installer: False
74
75 - name: define new production vm
76   virt:
77     name: "{{ vmname }}"
78     command: define
79     xml: "{{ lookup('template', 'libvirt-domain.xml.j2') }}"
80
81 - name: start vm
82   virt:
83     name: "{{ vmname }}"
84     state: running
85
86 - name: mark vm as autostarted
87   virt:
88     name: "{{ vmname }}"
89     autostart: "{{ hostvars[vmname].vm_install_cooked.autostart }}"
90     command: info ## virt module needs either command or state
91   when: hostvars[vmname].vm_install_cooked.autostart is defined