From 899bd90c2de02728d97a22751df95ebef21c503d Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Thu, 17 Jan 2019 14:16:52 +0100 Subject: [PATCH 1/8] Select correct selinux python library depending on python version --- roles/virt-install/tasks/prereq.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/virt-install/tasks/prereq.yml b/roles/virt-install/tasks/prereq.yml index 96ca66c48..8f235e0cf 100644 --- a/roles/virt-install/tasks/prereq.yml +++ b/roles/virt-install/tasks/prereq.yml @@ -7,7 +7,7 @@ with_items: - virt-install - httpd - - libselinux-python + - "{{ ((ansible_python_interpreter | default('somepython'))[-1] == '3') | ternary('python3-libselinux','libselinux-python') }}" - name: 'Enable and start libvirtd' service: From bfb361508583adb127ff08feb4590009280ce941 Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Thu, 17 Jan 2019 14:29:23 +0100 Subject: [PATCH 2/8] Add check_mode false to force listing VMs even in check mode --- roles/virt-install/tasks/create_vm.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/virt-install/tasks/create_vm.yml b/roles/virt-install/tasks/create_vm.yml index b318c173e..2beea6beb 100644 --- a/roles/virt-install/tasks/create_vm.yml +++ b/roles/virt-install/tasks/create_vm.yml @@ -8,6 +8,7 @@ - name: 'Gather the list of existing VMs' command: virsh list --name register: existing_vms + check_mode: false - name: 'Compose Command for new VM provisioning' include_tasks: 'virt-install.yml' From 32bcb34febed929539aacc79fde69d458e78d83e Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Thu, 17 Jan 2019 17:30:21 +0100 Subject: [PATCH 3/8] Add a note that defaults variables must be overwritten in the host's inventory --- roles/virt-install/defaults/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/roles/virt-install/defaults/main.yml b/roles/virt-install/defaults/main.yml index 5125779a0..4101c2c99 100644 --- a/roles/virt-install/defaults/main.yml +++ b/roles/virt-install/defaults/main.yml @@ -1,5 +1,9 @@ --- +# consider that this role isn't run against the created VMs but against the virtualization host, +# i.e. you can only overwrite these variables in the inventory by defining them at the host level. +# Use the libvirt_... variables to overwrite them at the VM level. + default_http_dir: "/var/www/html" default_http_host: "192.168.122.1" From 92d14d51532b119b785093ecc1fb719375ba3cd5 Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Thu, 17 Jan 2019 17:58:31 +0100 Subject: [PATCH 4/8] Make the ISO unmount handler work by replacing with_items with loops. The error was: 'dict object' has no attribute \"dict_keys(['../rhel-server-7.5-x86_64-dvd.iso'])\" Possibly due to Python 3 vs. 2 but it should solve the issue for everybody. --- roles/virt-install/handlers/main.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/roles/virt-install/handlers/main.yml b/roles/virt-install/handlers/main.yml index e5d36a050..54383a8a3 100644 --- a/roles/virt-install/handlers/main.yml +++ b/roles/virt-install/handlers/main.yml @@ -2,10 +2,9 @@ - name: 'Unmount install ISO' mount: - path: "{{ mounted_iso[item] }}" + path: "{{ item.value }}" state: absent - with_items: - - "{{ mounted_iso.keys() }}" + loop: "{{ mounted_iso | dict2items }}" - name: 'Remove authorized_keys' file: From 6a2126888bcc13eab6f4309d897ba9023d9f1f15 Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Thu, 17 Jan 2019 18:19:08 +0100 Subject: [PATCH 5/8] Make virt-install command generation more readable --- roles/virt-install/tasks/virt-install.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/roles/virt-install/tasks/virt-install.yml b/roles/virt-install/tasks/virt-install.yml index 66f80fca9..a3c90f938 100644 --- a/roles/virt-install/tasks/virt-install.yml +++ b/roles/virt-install/tasks/virt-install.yml @@ -76,4 +76,16 @@ - name: "Set Fact for VM command" set_fact: - virt_install_commands: "{{ virt_install_commands | default([]) + [ ('virt-install' + ' --connect ' + virtinstall_connect + ' --virt-type ' + virtinstall_virt_type + ' --name ' + virtinstall_name + ' --metadata \"title=' + virtinstall_title + ',description=' + virtinstall_description + ',name=' + virtinstall_name + '\"' + virt_install_network_string + ' --memory ' + virtinstall_memory + ' --vcpus ' + virtinstall_vcpus + virt_install_disk_string + ' --os-variant ' + virtinstall_os_variant + ' --location http://' + virtinstall_http_host + '/' + mounted_iso[virtinstall_iso] | basename + ' --initrd-inject=/tmp/' + virtinstall_ksfile | basename + ' --extra-args \"inst.repo=http://' + virtinstall_http_host + '/' + mounted_iso[virtinstall_iso] | basename + ' inst.ks=file:/' + virtinstall_ksfile | basename + '\"' + ' --graphics spice ' + ' --video qxl ' + ' --channel spicevmc ' + ' --autostart ') ] }}" + virt_install_commands: > + {{ virt_install_commands | default([]) + [ ('virt-install' + + ' --connect ' + virtinstall_connect + + ' --virt-type ' + virtinstall_virt_type + + ' --name ' + virtinstall_name + + ' --metadata "title=' + virtinstall_title + ',description=' + virtinstall_description + ',name=' + virtinstall_name + '"' + + virt_install_network_string + virt_install_disk_string + + ' --os-variant ' + virtinstall_os_variant + + ' --memory ' + virtinstall_memory + ' --vcpus ' + virtinstall_vcpus + + ' --location http://' + virtinstall_http_host + '/' + mounted_iso[virtinstall_iso] | basename + + ' --initrd-inject=/tmp/' + virtinstall_ksfile | basename + + ' --extra-args "inst.repo=http://' + virtinstall_http_host + '/' + mounted_iso[virtinstall_iso] | basename + ' inst.ks=file:/' + virtinstall_ksfile | basename + '"' + + ' --graphics spice ' + ' --video qxl ' + ' --channel spicevmc ' + ' --autostart ') ] }} From 9ffcbf35e2b9b94089c93c4532530c8660a1c865 Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Fri, 18 Jan 2019 14:13:53 +0100 Subject: [PATCH 6/8] Don't mount iso on boot to avoid breaking boot process of host --- roles/virt-install/tasks/virt-install.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/virt-install/tasks/virt-install.yml b/roles/virt-install/tasks/virt-install.yml index a3c90f938..b82f27618 100644 --- a/roles/virt-install/tasks/virt-install.yml +++ b/roles/virt-install/tasks/virt-install.yml @@ -64,6 +64,7 @@ opts: loop fstype: iso9660 state: mounted + boot: false # avoids that a dangling mount blocks boot process notify: 'Unmount install ISO' when: - mounted_iso[virtinstall_iso] is not defined From fb07f17da887a8fed926e3cdfcd5fcffa7b899c9 Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Fri, 18 Jan 2019 14:17:15 +0100 Subject: [PATCH 7/8] Correct task name for httpd service and leave enable as-is --- roles/virt-install/tasks/prereq.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/roles/virt-install/tasks/prereq.yml b/roles/virt-install/tasks/prereq.yml index 8f235e0cf..d2db0a45b 100644 --- a/roles/virt-install/tasks/prereq.yml +++ b/roles/virt-install/tasks/prereq.yml @@ -15,10 +15,9 @@ enabled: yes state: started -- name: 'Enable and start httpd' +- name: 'Start httpd (leave enabled as-is)' service: name: httpd - enabled: no state: started - name: 'Enable and start firewalld' From b7351476f1512ef4860db41009c724680c985354 Mon Sep 17 00:00:00 2001 From: Eric Lavarde Date: Fri, 18 Jan 2019 16:57:01 +0100 Subject: [PATCH 8/8] Make sure that virt-install has one command per line Addresses comment https://github.com/redhat-cop/infra-ansible/pull/311#discussion_r249089977 --- roles/virt-install/tasks/virt-install.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/roles/virt-install/tasks/virt-install.yml b/roles/virt-install/tasks/virt-install.yml index b82f27618..2243a45c6 100644 --- a/roles/virt-install/tasks/virt-install.yml +++ b/roles/virt-install/tasks/virt-install.yml @@ -83,10 +83,15 @@ + ' --virt-type ' + virtinstall_virt_type + ' --name ' + virtinstall_name + ' --metadata "title=' + virtinstall_title + ',description=' + virtinstall_description + ',name=' + virtinstall_name + '"' - + virt_install_network_string + virt_install_disk_string + + virt_install_network_string + + virt_install_disk_string + ' --os-variant ' + virtinstall_os_variant - + ' --memory ' + virtinstall_memory + ' --vcpus ' + virtinstall_vcpus + + ' --memory ' + virtinstall_memory + + ' --vcpus ' + virtinstall_vcpus + ' --location http://' + virtinstall_http_host + '/' + mounted_iso[virtinstall_iso] | basename + ' --initrd-inject=/tmp/' + virtinstall_ksfile | basename + ' --extra-args "inst.repo=http://' + virtinstall_http_host + '/' + mounted_iso[virtinstall_iso] | basename + ' inst.ks=file:/' + virtinstall_ksfile | basename + '"' - + ' --graphics spice ' + ' --video qxl ' + ' --channel spicevmc ' + ' --autostart ') ] }} + + ' --graphics spice ' + + ' --video qxl ' + + ' --channel spicevmc ' + + ' --autostart ') ] }}