780a4c4ead
Major changes: * Plumbing necessary for strict confinement with the microstack-support interface https://github.com/snapcore/snapd/pull/8926 * Until the interface is merged, devmode will be used and kernel modules will be loaded via an auxiliary service. * upgraded OpenStack components to Focal (20.04) and OpenStack Ussuri; * reworked the old patches; * added the Placement service since it is now separate; * addressed various build issues due to changes in snapcraft and built dependencies: * e.g. libvirt requires the build directory to be separate from the source directory) and LP: #1882255; * LP: #1882535 and https://github.com/pypa/pip/issues/8414 * LP: #1882839 * LP: #1885294 * https://storyboard.openstack.org/#!/story/2007806 * LP: #1864589 * LP: #1777121 * LP: #1881590 * ML2/OVS replated with ML2/OVN; * dnsmasq is not used anymore; * neutron l3 and DHCP agents are not used anymore; * Linux network namespaces are only used for neutron-ovn-metadata-agent. * ML2 DNS support is done via native OVN mechanisms; * OVN-related database services (southbound and northbound dbs); * OVN-related control plane services (ovn-controller, ovn-northd); * core20 base support (bionic hosts are supported); * the removal procedure now relies on the "remove" hook since `snap remove` cannot be used from the confined environment anymore; * prerequisites to enabling AppArmor confinement for QEMU processes created by the confined libvirtd. * Added the Spice html5 console proxy service to enable clients to retrieve and use it via `microstack.openstack console url show --spice <servername>`. * Added missing Cinder templates and DB migrations for the Cinder DB. * Added experimental support for a loop device-based LVM backend for Cinder. Due to LP: #1892895 this is not recommended to be used in production except for tempest testing with an applied workaround; * includes iscsid and iscsi-tcp kernel module loading; * includes LIO and loading of relevant kernel modules; * An LVM PV is created on top of a loop device with a backing file present in $SNAP_COMMON/cinder-lvm.img; * A VG is created on top of the PV; * LVs are created by Cinder and exported via LIO over iscsi to iscsid which hot-plugs new SCSI devices. Those SCSI devices are then propagated by Nova to libvirt and QEMU during volume attachment; * Added post-deployment testing via rally and tempest (via the microstack-test snap). A set of tests included into Refstack 2018.02 is executed (except for object storage tests due to the lack of object storage support). Change-Id: Ic70770095860a57d5e0a55a8a9451f9db6be7448
93 lines
3.9 KiB
Bash
Executable File
93 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
set -ex
|
|
|
|
|
|
# Initialize config
|
|
set-default-config
|
|
|
|
# TODO(dmitriis): disable other services and only enable them once the
|
|
# prerequisites are met instead of allowing snapd to start them and make them fail.
|
|
# snapd starts all non-disabled services by default which may lead to errors such as
|
|
# a module loading error in case of ovs-vswitchd. The sequence is as follows:
|
|
# 1. The snap is installed;
|
|
# 2. Non-disabled services are started;
|
|
# 3. Interfaces that do not have auto-connection enabled are manually connected by
|
|
# an operator (connecting openvswitch-support loads the openvswitch kernel module
|
|
# but auto-connection is not enabled for openvswitch-support).
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.ovsdb-server
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.ovn-ovsdb-server-sb
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.ovn-ovsdb-server-nb
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.ovs-vswitchd
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.ovn-northd
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.ovn-controller
|
|
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.iscsid
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.target
|
|
|
|
# No meaningful default backend is available yet.
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.cinder-backup
|
|
# Will only be enabled based on the answers during initialization.
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.setup-lvm-loopdev
|
|
# Will only be enabled if a backend is chosen to be configured by the user.
|
|
snapctl stop --disable $SNAP_INSTANCE_NAME.cinder-volume
|
|
|
|
|
|
mkdir -p $SNAP_DATA/lib/libvirt/images
|
|
mkdir -p ${SNAP_COMMON}/log/libvirt/qemu
|
|
# NOTE(dmitriis): there is currently no way to make sure this directory gets
|
|
# recreated on reboot which would normally be done via systemd-tmpfiles.
|
|
mkdir -p /run/lock/snap.$SNAP_INSTANCE_NAME
|
|
|
|
# Copy TEMPLATE.qemu into the common directory. Libvirt generates additional
|
|
# policy dynamically which is why its apparmor directory is writeable under $SNAP_COMMON.
|
|
# Also copy other abstractions that are used by this template.
|
|
rsync -rh $SNAP/etc/apparmor.d $SNAP_COMMON/etc
|
|
|
|
# MySQL snapshot for speedy install
|
|
# snapshot is a mysql data dir with
|
|
# rocky keystone,nova,glance,neutron dbs.
|
|
mkdir -p ${SNAP_COMMON}/lib
|
|
|
|
# Put cirros (and potentially other) images in a user writeable place.
|
|
mkdir -p ${SNAP_COMMON}/images
|
|
cp ${SNAP}/images/* ${SNAP_COMMON}/images/
|
|
|
|
# Install conf.d configuration from snap for db etc
|
|
echo "Installing configuration for OpenStack Services"
|
|
for project in neutron nova keystone glance; do
|
|
mkdir -p ${SNAP_COMMON}/etc/${project}/${project}.conf.d
|
|
cp -r ${SNAP}/etc/${project}/${project}.conf.d/* ${SNAP_COMMON}/etc/${project}/${project}.conf.d || true # Skip conf files that have been moved into templates
|
|
done
|
|
# Make a place for our horizon config overrides to live
|
|
mkdir -p ${SNAP_COMMON}/etc/horizon/local_settings.d
|
|
|
|
# ----- OVN -----
|
|
# Lay out directories used for OVN configuration and persistent data
|
|
for dir in etc/ovn var/lib/ovn var/log/ovn var/run/ovn; do
|
|
if [ ! -d $SNAP_COMMON/$dir ]; then
|
|
mkdir -p $SNAP_COMMON/$dir
|
|
fi
|
|
done
|
|
|
|
# Prepare access to the hosting systems Open vSwitch instance
|
|
# NOTE end user must execute `snap connect ovn:openvswitch` for this to work
|
|
ln -s /var/run/openvswitch $SNAP_COMMON/var/run/openvswitch
|
|
|
|
# The `ovn-ctl` script does not have enough knobs for useful tailoring of
|
|
# execution of the `ovn-northd` daemon. Instead it provides a file to pass
|
|
# arguments directly to the `ovn-northd` process.
|
|
#
|
|
# We fill the `args_northd` with necessary defaults and link to the file
|
|
# `ovn-ctl` looks for.
|
|
#
|
|
# For other daemons the corrensponding args_* file is used to pass arguments to
|
|
# `ovn-ctl`.
|
|
cat << EOF > $SNAP_COMMON/args_northd
|
|
--ovnnb-db=unix:$SNAP_COMMON/run/ovn/ovnnb_db.sock
|
|
--ovnsb-db=unix:$SNAP_COMMON/run/ovn/ovnsb_db.sock
|
|
EOF
|
|
ln -s $SNAP_COMMON/args_northd $SNAP_COMMON/etc/ovn/ovn-northd-db-params.conf
|
|
# ----- END OVN -----
|
|
|
|
snap-openstack setup # Sets up templates for the first time.
|