Kitchen is a no-fuss, no BS way to get a Chef OpenStack build for:

  • development of OpenStack or applications on top of it

  • a reference for how the services fit together

  • a simple lab environment

Kitchen builds are not recommended for production deployments, but they can work in a pinch when you just need OpenStack.

At an absolute minimum, you should use the following resources. What is listed is currently used in CI for the gate checks, as well as the tested minimum:

  • 8 vCPU (tests as low as 4, but it tends to get CPU bound)

  • 8 GB RAM (7 GB sort of works, but it’s tight - expect OOM/slowness)

  • 50 GB free disk space on the root partition

Recommended server resources:

  • CPU/motherboard that supports hardware-assisted virtualization

  • 8 CPU cores

  • 16 GB RAM

  • 80 GB free disk space on the root partition, or 50+ GB on a blank secondary volume.

It is possible to perform builds within a virtual machine for demonstration and evaluation, but your virtual machines will perform poorly. For production workloads, multiple nodes for specific roles are recommended.

Testing with Kitchen

There are three basic steps to building OpenStack with Test Kitchen, with an optional first step should you need to customize your build:

  • Configuration (this step is optional)

  • Install and bootstrap the Chef Development Kit

  • Run Test Kitchen

When building on a new server, it is recommended that all system packages are updated and then rebooted into the new kernel:

Note

Execute the following commands and scripts as the root user.

## Ubuntu
# apt-get update
# apt-get dist-upgrade
# reboot
## CentOS
# yum upgrade
# reboot

Start by cloning the OpenStack Chef repository and changing into the root directory:

# git clone https://opendev.org/openstack/openstack-chef \
    /opt/openstack-chef
# cd /opt/openstack-chef

Next, switch to the applicable branch/tag to be deployed. Note that deploying from the head of a branch may result in an unstable build due to changes in flight and upstream OpenStack changes. For a test (not a development) build, it is usually best to checkout the latest tagged version.

## List all existing branches.
# git branch -av

## Checkout some stable branch
# git checkout stable/queens

Note

The current master release is compatible with Ubuntu 18.04 (Bionic Beaver) and CentOS 7

By default the cookbooks deploy all OpenStack services with sensible defaults for the purpose of a gate check, development or testing system.

Deployers have the option to change how the build is configured by overriding in the respective kitchen YAML file. This can be useful when you want to make use of different services or test new cookbooks.

To use a different driver for Test Kitchen, such as for a multi-node development environment, pass the KITCHEN_YAML environment variable as an additional option to the kitchen command. For example, if you want to deploy a containerized development environment, instead of a Vagrant AIO, then execute:

# KITCHEN_YAML=.kitchen.dokken.yml kitchen verify [centos|ubuntu|all]