|
1 | 1 | --- |
| 2 | +- name: Get OS disk size digits |
| 3 | + vars: |
| 4 | + match_regex: '^[0-9]*' |
| 5 | + set_fact: |
| 6 | + os_vm_disk_size: "{{ vm_root_disk_size | regex_search(match_regex) }}" |
| 7 | + |
2 | 8 | - name: DEPLOY_VM get {{ os_qcow_template }} size |
3 | 9 | shell: > |
4 | 10 | qemu-img info "{{ os_qcow_template }}" | awk -F'[^0-9]*' '/virtual size/ {print $3}' |
|
7 | 13 |
|
8 | 14 | - name: DEPLOY_VM convert disk size to bytes |
9 | 15 | vars: |
10 | | - new_disk_size: "{{ vm_root_disk_size }} GB" |
| 16 | + new_disk_size: "{{ os_vm_disk_size }} GB" |
11 | 17 | disk_size_in_bytes: "{{ new_disk_size|human_to_bytes }}" |
12 | 18 | set_fact: |
13 | 19 | qcow_source_disk_size: "{{ qcow_source_size.stdout }}" |
14 | 20 | wanted_size: "{{ disk_size_in_bytes }}" |
| 21 | + os_disk_wanted_size: "{{ os_vm_disk_size }}G" |
15 | 22 | expand_os_disk: "{{ true if disk_size_in_bytes|int > qcow_source_size.stdout|int else false }}" |
16 | 23 |
|
17 | 24 | - name: DEPLOY_VM check if {{ vm_name }} disk {{ os_disk }} exist |
18 | 25 | stat: |
19 | 26 | path: "{{ os_disk }}" |
| 27 | + get_checksum: no |
| 28 | + get_attributes: no |
20 | 29 | register: os_disk_created |
21 | 30 |
|
22 | | -- name: DEPLOY_VM {{ vm_name }} disk image |
| 31 | +- name: DEPLOY_VM - Ensure {{ os_disk }} disk size is {{ os_vm_disk_size }}G |
23 | 32 | when: vm_name not in all_instances.list_vms and expand_os_disk|bool |
24 | 33 | block: |
| 34 | + - name: DEPLOY_VM - Get existing VM disk size |
| 35 | + when: os_disk_created.stat.exists |
| 36 | + command: "qemu-img info {{ os_disk }}" |
| 37 | + register: _os_sda_disk_size |
| 38 | + changed_when: False |
| 39 | + become: yes |
| 40 | + |
| 41 | + - name: DEPLOY_VM - Get the size of disk {{ os_disk }} |
| 42 | + when: os_disk_created.stat.exists |
| 43 | + vars: |
| 44 | + match_regex: "[0-9]*G" |
| 45 | + set_fact: |
| 46 | + existing_os_vm_disk_size: "{{ _os_sda_disk_size.stdout | regex_search(match_regex) }}" |
| 47 | + |
| 48 | + - name: DEPLOY_VM - Disk {{ os_disk }} size is {{ existing_os_vm_disk_size }} - REMOVING |
| 49 | + file: |
| 50 | + path: "{{ os_disk }}" |
| 51 | + state: absent |
| 52 | + when: existing_os_vm_disk_size is defined and existing_os_vm_disk_size != os_disk_wanted_size |
| 53 | + |
| 54 | + - name: DEPLOY_VM check if {{ vm_name }} disk {{ os_disk }} exist |
| 55 | + stat: |
| 56 | + path: "{{ os_disk }}" |
| 57 | + get_checksum: no |
| 58 | + get_attributes: no |
| 59 | + register: os_disk_created |
| 60 | + |
25 | 61 | - name: DEPLOY_VM Create operating system disk for {{ vm_name }} |
26 | 62 | when: not os_disk_created.stat.exists |
27 | | - command: "qemu-img create -f qcow2 -o preallocation={{ qemu_img_allocation }} {{ os_disk }} {{ vm_root_disk_size }}" |
| 63 | + command: "qemu-img create -f qcow2 -o preallocation={{ qemu_img_allocation }} {{ os_disk }} {{ os_vm_disk_size }}G" |
28 | 64 | args: |
29 | 65 | creates: "{{ os_disk }}" |
30 | 66 | register: create_os_disk |
31 | 67 |
|
32 | | - - name: DEPLOY_VM grow {{ vm_name }} operating system |
| 68 | + - name: DEPLOY_VM Get {{ os_disk }} filesystem size |
| 69 | + shell: > |
| 70 | + virt-filesystems -a {{ os_disk }} -h --filesystems -l| awk 'NR>1 {print $5}' |
| 71 | + changed_when: False |
| 72 | + register: filesystem_size |
| 73 | + become: yes |
| 74 | + |
| 75 | + - name: DEPLOY_VM Declare {{ os_disk }} filesystem size |
| 76 | + set_fact: |
| 77 | + grow_filesystem_size: "{{ 'yes' if os_disk_wanted_size != filesystem_size.stdout else 'no' }}" |
| 78 | + |
| 79 | + - name: DEPLOY_VM grow {{ vm_name }} disk {{ os_disk }} based on {{ os_qcow_template }} |
| 80 | + when: grow_filesystem_size|bool |
33 | 81 | command: > |
34 | | - sudo virt-resize -v -x --expand /dev/sda1 "{{ os_qcow_template }}" "{{ os_disk }}" |
| 82 | + virt-resize -v -x --expand /dev/sda1 "{{ os_qcow_template }}" "{{ os_disk }}" |
35 | 83 | register: resize_create_os_disk |
36 | 84 | changed_when: '"Resize operation completed with no errors" in resize_create_os_disk.stdout' |
| 85 | + become: yes |
37 | 86 |
|
38 | | - - name: DEPLOY_VM Grow rhel root filesystem |
39 | | - command: /usr/local/bin/qubi-virt-customize -a {{ os_disk }} --run-command 'xfs_growfs /' |
40 | | - register: grow_create_os_disk |
41 | | - changed_when: '"Finishing off" in grow_create_os_disk.stdout' |
42 | | - when: "'rhel' in os_release" |
43 | | - |
44 | | - - name: DEPLOY_VM Grow fedora root filesystem |
45 | | - command: /usr/local/bin/qubi-virt-customize -a {{ os_disk }} --run-command 'resize2fs /dev/sda1' |
46 | | - register: grow_create_os_disk |
47 | | - changed_when: '"Finishing off" in grow_create_os_disk.stdout' |
48 | | - when: "'fedora' in os_release" |
| 87 | +## TODO: Remove becasuse the virt-resize task does this |
| 88 | +# - name: DEPLOY_VM Grow rhel root filesystem |
| 89 | +# command: /usr/local/bin/qubi-virt-customize -a {{ os_disk }} --run-command 'xfs_growfs /' |
| 90 | +# register: grow_create_os_disk |
| 91 | +# changed_when: '"Finishing off" in grow_create_os_disk.stdout' |
| 92 | +# when: > |
| 93 | +# "'rhel' in os_release" and |
| 94 | +# grow_filesystem_size|bool |
| 95 | +# |
| 96 | +# - name: DEPLOY_VM Grow fedora root filesystem |
| 97 | +# command: /usr/local/bin/qubi-virt-customize -a {{ os_disk }} --run-command 'resize2fs /dev/sda1' |
| 98 | +# register: grow_create_os_disk |
| 99 | +# changed_when: '"Finishing off" in grow_create_os_disk.stdout' |
| 100 | +# when: > |
| 101 | +# "'fedora' in os_release" and |
| 102 | +# grow_filesystem_size|bool |
49 | 103 |
|
50 | 104 | - name: DEPLOY_VM Copy {{ vm_qcow_image }} to {{ os_disk }} |
51 | 105 | when: vm_name not in all_instances.list_vms and not expand_os_disk|bool |
|
95 | 149 | when: item.enable |
96 | 150 | changed_when: '"Disk attached successfully" in attached_disk.stdout' |
97 | 151 |
|
| 152 | +- name: DEPLOY_VM - Shutdown {{ vm_name }} when extra disk is added |
| 153 | + when: attached_disk.changed |
| 154 | + shell: > |
| 155 | + virsh destroy "{{ vm_name }}" |
| 156 | + ignore_errors: yes |
| 157 | + register: virsh_shutdown |
| 158 | + become: yes |
| 159 | + |
| 160 | +- name: DEPLOY_VM - Ensure {{ vm_name }} is shutdown |
| 161 | + when: virsh_shutdown.changed |
| 162 | + virt: |
| 163 | + command: list_vms |
| 164 | + state: shutdown |
| 165 | + register: shutdown_vms |
| 166 | + until: vm_name in shutdown_vms.list_vms |
| 167 | + retries: 120 |
| 168 | + delay: 30 |
| 169 | + become: yes |
| 170 | + |
| 171 | +- name: DEPLOY_VM - Start {{ vm_name }} |
| 172 | + when: attached_disk.changed |
| 173 | + virt: |
| 174 | + name: "{{ vm_name }}" |
| 175 | + state: running |
| 176 | + become: yes |
| 177 | + |
98 | 178 | - name: DEPLOY_VM wait for {{ vm_name }} ip address |
99 | 179 | command: "/usr/local/bin/getvmip -r {{ vm_name }}" |
100 | 180 | until: dhcp_vm_ip.stdout != "" |
|
0 commit comments