--- # Copyright 2014, Rackspace US, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - include_tasks: nova_compute_kvm_install.yml tags: - nova-install - name: Check libvirtd version command: "libvirtd --version" register: _libvirtd_version_cmd changed_when: false tags: - nova-install - nova-config - nova-kvm - nova-libvirt - name: Set libvirtd version set_fact: libvirtd_version: "{{ _libvirtd_version_cmd['stdout'].split()[-1] }}" tags: - nova-install - nova-config - nova-kvm - nova-libvirt - name: Set nested kvm virt copy: src: kvm.conf dest: /etc/modprobe.d/kvm.conf owner: root group: root mode: 0644 when: - nova_nested_virt_enabled | bool tags: - nova-config - nova-kvm - name: Add nova user to libvirtd group user: name: "{{ nova_system_user_name }}" groups: "{{ libvirt_group }}" append: "yes" tags: - nova-install - nova-libvirt - name: Ensure kvm permissions command: "udevadm trigger" changed_when: false tags: - nova-config - nova-kvm - name: Set kernel permissions to enable libguestfs features (Ubuntu) include_tasks: nova_kernel_permissions.yml when: - ansible_facts['distribution'] == 'Ubuntu' - nova_libvirt_inject_key | bool or nova_libvirt_inject_password | bool - name: Set libvirtd config template: src: libvirtd.conf.j2 dest: /etc/libvirt/libvirtd.conf owner: "root" group: "root" mode: 0644 notify: Restart libvirt-bin tags: - nova-config - nova-kvm - nova-libvirt - name: Set qemu config template: src: "qemu.conf.j2" dest: "/etc/libvirt/qemu.conf" owner: "root" group: "root" mode: "0600" when: - qemu_conf_dict is defined or nova_network_type == 'calico' notify: Restart libvirt-bin tags: - nova-config - nova-kvm - nova-libvirt - name: Set libvirt runtime options (Ubuntu) lineinfile: dest: "/etc/default/libvirtd" line: 'libvirtd_opts="-l"' regexp: "^libvirtd_opts=" backup: "yes" when: - (nova_libvirtd_listen_tcp == 1) or (nova_libvirtd_listen_tls == 1) - libvirtd_version is version('5.7', '<') - ansible_facts['pkg_mgr'] == 'apt' notify: Restart libvirt-bin tags: - nova-config - nova-kvm - nova-libvirt - name: Unset libvirt runtime options (Ubuntu) lineinfile: dest: "/etc/default/libvirtd" line: 'libvirtd_opts=""' regexp: "^libvirtd_opts=" backup: "yes" when: - (nova_libvirtd_listen_tcp == 0 and nova_libvirtd_listen_tls == 0) or libvirtd_version is version('5.7', '>=') - ansible_facts['pkg_mgr'] == 'apt' notify: Restart libvirt-bin tags: - nova-config - nova-kvm - nova-libvirt - name: Set libvirt runtime options (RPM) lineinfile: dest: "/etc/sysconfig/libvirtd" line: 'LIBVIRTD_ARGS="-l"' regexp: "^(#)?LIBVIRTD_ARGS=*" backup: "yes" when: - (nova_libvirtd_listen_tcp == 1) or (nova_libvirtd_listen_tls == 1) - libvirtd_version is version('5.7', '<') - ansible_facts['pkg_mgr'] in ['yum', 'dnf', 'zypper'] notify: Restart libvirt-bin tags: - nova-config - nova-kvm - nova-libvirt - name: Unset libvirt runtime options (RPM) lineinfile: dest: "/etc/sysconfig/libvirtd" line: 'LIBVIRTD_ARGS=""' regexp: "^(#)?LIBVIRTD_ARGS=*" backup: "yes" when: - (nova_libvirtd_listen_tcp == 0 and nova_libvirtd_listen_tls == 0) or libvirtd_version is version('5.7', '>=') - ansible_facts['pkg_mgr'] in ['yum', 'dnf', 'zypper'] notify: Restart libvirt-bin tags: - nova-config - nova-kvm - nova-libvirt - name: Set qemu-kvm KSM config (Ubuntu) lineinfile: dest: "/etc/default/qemu-kvm" line: "KSM_ENABLED={{ nova_compute_ksm_enabled | ternary('1','0') }}" regexp: "^KSM_ENABLED=*" backup: yes when: - ansible_facts['distribution'] == 'Ubuntu' notify: Restart libvirt-bin tags: - nova-config - nova-kvm - nova-libvirt - include_tasks: nova_disable_smt.yml when: - ansible_facts['architecture'] == 'ppc64le' tags: - nova-config - include_tasks: nova_enable_ksm.yml when: - nova_compute_ksm_enabled | bool tags: - nova-config - include_tasks: nova_compute_kvm_virsh_net_remove.yml tags: - nova-config - nova-kvm - nova-libvirt - nova-kvm-virsh-net # NOTE(mnaser): These 2 tasks should disappear once the following bug is fixed # https://bugs.launchpad.net/nova/+bug/1825386 - name: Create UEFI firmware folder file: path: /usr/share/OVMF state: directory when: - ansible_facts['os_family'] == 'Suse' tags: - nova-config - nova-kvm - nova-libvirt - name: Symlink UEFI firmware files file: src: "{{ (ansible_facts['os_family'] == 'RedHat') | ternary('/usr/share/OVMF/OVMF_CODE.secboot.fd', '/usr/share/qemu/ovmf-x86_64-ms-code.bin') }}" dest: /usr/share/OVMF/OVMF_CODE.fd state: link when: - ansible_facts['os_family'] in ['RedHat', 'Suse'] tags: - nova-config - nova-kvm - nova-libvirt