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