I’ve been working in this project for one year and a half and has been a great experience in many ways. Currently the StarlingX 2.0 was announced, were some big changes and features were introduced.
I install and deploy StarlingX almost every day to test the system and sometimes just to reinstall it when I broke it. Although the project is intended to be run in baremetal systems, it is possible to create virtual deployments for testing and evaluation purposes.
The testing team has created a really cool test suite that deploys StarlingX in baremetal and virtual environments. In this post I’ll explain how to use this test suite to deploy a Simplex StarlingX installation.
Requirements
I’m using a system with the following specs:
- Processor Intel Xeon 3.8 GHz
- 64Gb of RAM
- 1 TB disk.
The requirements might look excessive but in this system I’m able to run all the StarlingX configurations. The Simplex configuration is the least demanding one and I’ve run it in a system with 32GB of RAM. The configuration with external storage requires to run 6 VMs and it’s the most demanding.
I’m using Fedora 30 but the test suite can run in Ubuntu 16.04 and 18.04.
Also, ensure that you can run sudo
commands without password.
Install dependencies
The following packages are required:
$ sudo dnf install virt-manager libvirt-daemon qemu-system-x86 python-pip python-devel redhat-rpm-config libvirt-client xterm
$ sudo pip install virtualenv
Configure libvirt/qemu
This can be the most tricky part of this process, to get qemu work with the test suite.
Ensure you have this values set in the /etc/libvirt/qemu.conf
file.
user = "root"
group = "root"
dynamic_ownership = 0
And then restart the libvirtd service
$ sudo systemctl restart libvirtd
Prepare test suite
To clone the repository run:
git clone https://opendev.org/starlingx/test.git
The files under Config
folder needs to be edited to define or remove the docker http proxy definition. To me it worked like this.
dns_servers:
- 8.8.8.8
#docker_http_proxy: http://<url>:<port>
#docker_https_proxy: http://<url>:<port>
external_oam_subnet: 10.10.10.0/24
external_oam_gateway_address: 10.10.10.1
external_oam_floating_address: 10.10.10.3
ansible_become_pass: ANSIBLE_PASS
admin_password: ADMIN_PASS
Download files
Before running the test suite, two files needs to be present in the same directory, the StarlingX ISO image and the armada file. The ISO is used to install the base OS and the armada file to deploy the containerized environment.
To download the StarlingX 2.0 release run:
wget http://mirror.starlingx.cengn.ca/mirror/starlingx/release/2.0.0/centos/outputs/iso/bootimage.iso
and the armada file:
wget -O stx-openstack.tgz http://mirror.starlingx.cengn.ca/mirror/starlingx/release/2.0.0/centos/outputs/helm-charts/helm-charts-stx-openstack-centos-stable-versioned.tgz
Run suite
First, install test suite dependencies in a virtual environment.
$ virtualenv myenv
$ source myenv/bin/activate
(myenv) $ pip install -r requirements.txt
(myenv) $ pip install -r test-requirements.txt
Now we can run the test suite:
(myenv) $ python runner.py --run-suite Setup --configuration 1 --environment virtual
Here we are telling the test suite to run the Setup
section which creates the VMs and installs the ISO. With --configuration 1
that we want a simplex configuration and with --environment virtual
that we want a virtual environment execution.
If everything goes right, you should see something like this:
Now we can wait until the installation completes. If you want to see more you can use virt-manager
to see something like this:
After Setup
finishes we need to run the Provision
set.
(myenv) $ python runner.py --run-suite Provision
This may take a while to finish, depending on your Internet speed connection. In this process a set of containers will be downloaded. After the finished you should be able to load the StarlingX admin interface.