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
186 lines
4.4 KiB
YAML
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
|