c16597aa2d
Adds the kayobe-seed-vm-centos8 CI job to configure the Zuul VM as a seed hypervisor, and use nested virt to provision a seed VM. This ensures that the seed hypervisor code paths are tested. The job uses a Cirros image for the seed VM rather than the usual CentOS cloud image. This is to reduce bandwidth required to download the image. It does mean that the resulting seed VM cannot be used as a seed, but nested virt would make this slow and unreliable anyway. Cirros does not load cdrom drivers by default, so we add the configdrive as a disk rather than a cdrom device. Depends-On: https://review.opendev.org/617161 Change-Id: I2268a1ddf9a2870c713f32a40689e1686365aabd Story: 2001655 Task: 6683
64 lines
2.2 KiB
YAML
64 lines
2.2 KiB
YAML
---
|
|
- hosts: primary
|
|
environment:
|
|
KAYOBE_CONFIG_SOURCE_PATH: "{{ kayobe_config_src_dir }}"
|
|
tasks:
|
|
# NOTE(mgoddard): Use the name zz-overrides.yml to ensure this takes
|
|
# precedence over the standard config files.
|
|
- name: Ensure kayobe-config override config file exists
|
|
template:
|
|
src: overrides.yml.j2
|
|
dest: "{{ kayobe_config_src_dir }}/etc/kayobe/zz-overrides.yml"
|
|
|
|
- name: Ensure seed group variables exist
|
|
template:
|
|
src: seed-group-vars.j2
|
|
dest: "{{ kayobe_config_src_dir }}/etc/kayobe/inventory/group_vars/seed/network-interfaces"
|
|
|
|
# NOTE(mgoddard): The kayobe dev config by default expects a bridge -
|
|
# braio - to exist with an IP address of 192.168.33.4.
|
|
- name: Ensure all-in-one network bridge interface exists
|
|
command: "{{ item }}"
|
|
become: true
|
|
with_items:
|
|
- "ip l add braio type bridge"
|
|
- "ip l set braio up"
|
|
- "ip a add 192.168.33.4/24 dev braio"
|
|
# NOTE(mgoddard): CentOS 8 removes interfaces from their bridge during
|
|
# ifdown, and removes the bridge if there are no interfaces left. When
|
|
# Kayobe bounces veth links plugged into the bridge, it causes the
|
|
# bridge which has the IP we are using for SSH to be removed. Use a
|
|
# dummy interface.
|
|
- "ip l add dummy1 type dummy"
|
|
- "ip l set dummy1 up"
|
|
- "ip l set dummy1 master braio"
|
|
|
|
# NOTE(mgoddard): Configure IP forwarding and NAT to allow communication
|
|
# from the seed VM to the outside world.
|
|
|
|
# FIXME(mgoddard): use a libvirt network?
|
|
- name: Ensure NAT is configured
|
|
iptables:
|
|
chain: POSTROUTING
|
|
table: nat
|
|
out_interface: "{{ ansible_default_ipv4.interface }}"
|
|
jump: MASQUERADE
|
|
become: true
|
|
|
|
# FIXME(mgoddard): use a libvirt network?
|
|
- name: Ensure IP forwarding is enabled
|
|
sysctl:
|
|
name: net.ipv4.conf.all.forwarding
|
|
value: 1
|
|
become: true
|
|
|
|
- name: Ensure SELinux is disabled
|
|
selinux:
|
|
state: disabled
|
|
become: True
|
|
|
|
- name: Ensure kayobe is installed
|
|
shell:
|
|
cmd: dev/install.sh &> {{ logs_dir }}/ansible/install
|
|
chdir: "{{ kayobe_src_dir }}"
|