85 lines
2.7 KiB
YAML
85 lines
2.7 KiB
YAML
- name: Check if {{ miq_image_path }} is directory
|
|
stat:
|
|
path: "{{ miq_image_path }}"
|
|
register: image_path_st
|
|
|
|
- name: Download the qcow image
|
|
get_url:
|
|
url: "{{ miq_qcow_url }}"
|
|
dest: "{{ image_path_st.stat.isdir | ternary( miq_image_path~'/'~miq_qcow_url.rpartition('/')[-1], miq_image_path) | regex_replace('//', '/') }}"
|
|
checksum: "{{ miq_image_checksum | default(omit) }}"
|
|
register: downloaded_file
|
|
|
|
- name: Check file type
|
|
command: "/usr/bin/file {{ downloaded_file.dest | quote }}"
|
|
changed_when: false
|
|
register: filetype
|
|
|
|
- name: Fail if image is not qcow
|
|
fail:
|
|
msg: "The downloaded file is not a valid QCOW file."
|
|
when: '"QCOW" not in filetype.stdout'
|
|
|
|
- name: Calculate image size in GiB
|
|
set_fact:
|
|
miq_image_size_gib: "{{ filetype.stdout_lines[0].split()[5] | int // 2**30 }}"
|
|
|
|
#
|
|
# Find default disk size for miq disk:
|
|
#
|
|
- block:
|
|
- name: Extract integer from miq_vm_disk_size
|
|
set_fact:
|
|
miq_vm_disk_size_gib: "{{ miq_vm_disk_size | regex_replace('GiB$') }}"
|
|
|
|
- name: Fail if miq_vm_disk_size is less than qcow size
|
|
fail:
|
|
msg: "Setting a disk size ({{ miq_vm_disk_size }}) lower than the image size ({{ miq_image_size_gib }}GiB) may result in disk corruption."
|
|
when: "miq_vm_disk_size_gib < miq_image_size_gib"
|
|
when: "miq_vm_disk_size is defined"
|
|
|
|
#
|
|
# Find default data storage domain for Miq disk:
|
|
#
|
|
- block:
|
|
- name: Fetch storages
|
|
ovirt_storage_domain_facts:
|
|
auth: "{{ ovirt_auth }}"
|
|
pattern: "Clusters.name={{ miq_vm_cluster }} and status=active"
|
|
|
|
- name: Find data domain
|
|
set_fact:
|
|
disk_storage_domain: "{{ ovirt_storage_domains | json_query(the_query) | list | first }}"
|
|
vars:
|
|
the_query: "[?type=='data']"
|
|
when: miq_vm_disk_storage is undefined
|
|
|
|
- name: Check if VM already exists
|
|
ovirt_vm_facts:
|
|
auth: "{{ ovirt_auth }}"
|
|
pattern: "name={{ miq_vm_name }}"
|
|
|
|
- block:
|
|
- name: Deploy the qcow image to oVirt engine
|
|
ovirt_disk:
|
|
auth: "{{ ovirt_auth }}"
|
|
name: "{{ miq_vm_disk_name | default(miq_vm_name) }}"
|
|
interface: "{{ miq_vm_disk_interface }}"
|
|
size: "{{ miq_vm_disk_size | default(miq_image_size_gib + 'GiB') }}"
|
|
format: "{{ miq_vm_disk_format }}"
|
|
image_path: "{{ downloaded_file.dest }}"
|
|
storage_domain: "{{ disk_storage_domain.name if disk_storage_domain is defined else miq_vm_disk_storage }}"
|
|
force: "{{ ovirt_vms | length == 0 }}"
|
|
register: ovirt_disk
|
|
|
|
rescue:
|
|
- name: Remove failed disk
|
|
ovirt_disk:
|
|
auth: "{{ ovirt_auth }}"
|
|
state: absent
|
|
name: "{{ miq_vm_disk_name | default(miq_vm_name) }}"
|
|
|
|
- name: Set miq_disk_deploy_failed
|
|
set_fact:
|
|
miq_disk_deploy_failed: true
|