-
Mark Goddard authored
Change-Id: Idd53d689e0e9baad571b2f0f4005f3efa3e21830
Mark Goddard authoredChange-Id: Idd53d689e0e9baad571b2f0f4005f3efa3e21830
Automated Setup
This section provides information on the development tools provided by Kayobe to automate the deployment of various development environments.
For a manual procedure, see :ref:`contributor-manual`.
Overview
The Kayobe development environment automation tooling is built using simple shell scripts. Some minimal configuration can be applied by setting the environment variables in dev/config.sh. Control plane configuration is typically provided via the kayobe-config-dev repository, although it is also possible to use your own Kayobe configuration. This allows us to build a development environment that is as close to production as possible.
Environments
The following development environments are supported:
- Overcloud (single OpenStack controller)
- Seed
The Universe from Nothing workshop may be of use for more advanced testing scenarios involving a seed hypervisor, seed VM, and separate control and compute nodes.
Overcloud
Preparation
Clone the Kayobe repository:
git clone https://opendev.org/openstack/kayobe.git -b |current_release_git_branch_name|
Change the current directory to the Kayobe repository:
cd kayobe
Clone the kayobe-config-dev
repository to config/src/kayobe-config
mkdir -p config/src
git clone https://opendev.org/openstack/kayobe-config-dev.git config/src/kayobe-config -b |current_release_git_branch_name|
Inspect the Kayobe configuration and make any changes necessary for your environment.
If using Vagrant, follow the steps in :ref:`contributor-vagrant` to prepare your environment for use with Vagrant and bring up a Vagrant VM.
If not using Vagrant, the default development configuration expects the
presence of a bridge interface on the OpenStack controller host to carry
control plane traffic. The bridge should be named breth1
with a single
port eth1
, and an IP address of 192.168.33.3/24
. This can be modified
by editing
config/src/kayobe-config/etc/kayobe/inventory/group_vars/controllers/network-interfaces
.
This can be added using the following commands:
sudo ip l add breth1 type bridge
sudo ip l set breth1 up
sudo ip a add 192.168.33.3/24 dev breth1
sudo ip l add eth1 type dummy
sudo ip l set eth1 up
sudo ip l set eth1 master breth1
Usage
If using Vagrant, SSH into the Vagrant VM and change to the shared directory:
vagrant ssh
cd /vagrant
If not using Vagrant, run the dev/install-dev.sh
script to install Kayobe and
its dependencies in a Python virtual environment:
./dev/install-dev.sh
Note
This will create an :ref:`editable install <installation-editable>`.
It is also possible to install Kayobe in a non-editable way, such that
changes will not been seen until you reinstall the package. To do this you
can run ./dev/install.sh
.
Run the dev/overcloud-deploy.sh
script to deploy the OpenStack control
plane:
./dev/overcloud-deploy.sh
Upon successful completion of this script, the control plane will be active.
Testing
Scripts are provided for testing the creation of virtual and bare metal instances.
Virtual Machines
The control plane can be tested by running the dev/overcloud-test-vm.sh
script. This will run the init-runonce
setup script provided by Kolla
Ansible that registers images, networks, flavors etc. It will then deploy a
virtual server instance, and delete it once it becomes active:
./dev/overcloud-test-vm.sh
Bare Metal Compute
For a control plane with Ironic enabled, a "bare metal" instance can be deployed. We can use the Tenks project to create fake bare metal nodes.
On Ubuntu, the nova_libvirt
image does not contain the qemu-utils
package necessary for image operations used by Tenks. Install it as follows:
sudo docker exec -u root nova_libvirt bash -c 'apt update && apt -y install qemu-utils'
Clone the tenks repository:
git clone https://opendev.org/openstack/tenks.git