diff options
Diffstat (limited to 'roles/vmm/tasks')
-rw-r--r-- | roles/vmm/tasks/download_iso.yml | 34 | ||||
-rw-r--r-- | roles/vmm/tasks/generate_disk.yml | 21 | ||||
-rw-r--r-- | roles/vmm/tasks/generate_vmconf.yml | 29 |
3 files changed, 84 insertions, 0 deletions
diff --git a/roles/vmm/tasks/download_iso.yml b/roles/vmm/tasks/download_iso.yml new file mode 100644 index 0000000..c767c05 --- /dev/null +++ b/roles/vmm/tasks/download_iso.yml @@ -0,0 +1,34 @@ + +# vmm ~~ tasks/download_iso.yml + +--- + +- meta: end_play + when: iso is not defined + +- set_fact: + symlink: "{{ vmm.iso.dir }}/{{ vmm.iso[iso].name }}-latest.iso" + +- set_fact: + dest: "{{ symlink | regex_replace('latest', vmm.iso[iso].version) }}" + url: "{{ vmm.iso[iso].url \ + | regex_replace('VERSIONDIR', vmm.iso[iso].versiondir) \ + | regex_replace('VERSION', vmm.iso[iso].version) }}" + + sha256: "{{ vmm.iso[iso].sha256 \ + | regex_replace('VERSIONDIR', vmm.iso[iso].versiondir) \ + | regex_replace('VERSION', vmm.iso[iso].version) }}" + +- name: Get latest iso + get_url: + url: "{{ url }}" + dest: "{{ dest }}" + force: "{{ force | default('no') }}" + checksum: "sha256:{{ sha256 }}" + +- name: Symlink latest iso + file: + src: "{{ dest }}" + dest: "{{ symlink }}" + state: link + diff --git a/roles/vmm/tasks/generate_disk.yml b/roles/vmm/tasks/generate_disk.yml new file mode 100644 index 0000000..c8ec091 --- /dev/null +++ b/roles/vmm/tasks/generate_disk.yml @@ -0,0 +1,21 @@ + +# vmm ~~ tasks/generate_disk.yml + +--- + +- name: Check existence of disk directory + file: + path: "{{ vmm.disk.dir }}" + state: directory + +- name: Get existing disk file size + stat: + path: "{{ vmm.disk.dir }}/{{ hostvars[vm].ansible_host }}.{{ vmm.disk.format }}" + register: st + +- name: Generate vm disk + shell: | + disk="{{ vmm.disk.dir }}/{{ hostvars[vm].ansible_host }}.{{ vmm.disk.format }}" + rm "${disk}" + vmctl create -s {{ hostvars[vm].size }} "${disk}" + when: not st.stat.exists or st.stat.size == 0 diff --git a/roles/vmm/tasks/generate_vmconf.yml b/roles/vmm/tasks/generate_vmconf.yml new file mode 100644 index 0000000..9f120fd --- /dev/null +++ b/roles/vmm/tasks/generate_vmconf.yml @@ -0,0 +1,29 @@ + +# vmm ~~ tasks/generate_vmconf.yml + +--- + +- name: Generate vmm configuration + template: + src: templates/vm.conf.j2 + dest: "{{ vmm.config.file }}" + +- name: Create empty disk + file: + path: "{{ vmm.disk.dir }}/{{ hostvars[item].ansible_host }}.{{ vmm.disk.format }}" + state: touch + loop: "{{ vm.hosts }}" + +- name: Restart and enable vmd + service: + name: vmd + state: restarted + enabled: true + when: vm.enabled + +- name: Stop and disable vmd + service: + name: vmd + state: stopped + enabled: false + when: not vm.enabled |