Files
openstack-ansible-os_nova/tasks/drivers/kvm/nova_compute_kvm.yml
Mohammed Naser 739647dffa kvm: add support for booting uefi instances
In order to boot UEFI instances successfully, the OVMF image
must be installed and located at the path that is hardcoded
inside Nova.

This patch takes care of installing the OVMF images and sets
up links to point towards the hardcoded path for operating
systems that don't install at the expected path.

Change-Id: I62f4aa26ffd0d2f3ba4aa19fbdb72578ef0223e4
Closes-Bug: #1825386
Closes-Bug: #1831279
2019-05-31 18:12:31 -04:00

186 lines
4.4 KiB
YAML

---
# 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: 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_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 when listening on tcp (Ubuntu)
lineinfile:
dest: "/etc/default/libvirtd"
line: 'libvirtd_opts="-l"'
regexp: "^libvirtd_opts="
backup: "yes"
when:
- nova_libvirtd_listen_tcp == 1
- ansible_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
- ansible_pkg_mgr in ['yum', 'dnf', 'zypper']
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=""'
regexp: "^(#)?LIBVIRTD_ARGS=*"
backup: "yes"
when:
- nova_libvirtd_listen_tcp == 0
- ansible_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_distribution == 'Ubuntu'
notify: Restart libvirt-bin
tags:
- nova-config
- nova-kvm
- nova-libvirt
- include_tasks: nova_disable_smt.yml
when:
- ansible_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_os_family == 'Suse'
tags:
- nova-config
- nova-kvm
- nova-libvirt
- name: Symlink UEFI firmware files
file:
src: "{{ (ansible_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_os_family in ['RedHat', 'Suse']
tags:
- nova-config
- nova-kvm
- nova-libvirt