Ansible Role for OpenStack Development
As mentioned previously, I have been using ansible for managing my development configuration for a few months now, and I’m finally getting around to releasing some of the roles I’ve created in a form (possibly) useful to other folks. This one configures some of the packages needed to run unit tests for OpenStack projects.
There’s nothing quite as annoying as having tox fail to build a test
environment because some system package is missing. The
openstack-dev role installs many of the commonly needed system
dependencies, such as
libffi-dev. It isn’t an
exhaustive list, and it isn’t sufficient to run OpenStack properly,
but it does allow most of the unit tests to run, including some that
are optional when driver libraries are not present. For a complete
list of packages installed, refer to the
The role also sets up a working directory (
where the git repositories containing OpenStack source can be checked
out. The role clones the
openstack/oslo-incubator and creates an
update.sh script in the
openstack_dev_repos_dir to call the tool
from the oslo-incubator for cloning copies of all of the OpenStack
The role also clones
openstack/requirements, which contains
tools/build_wheels.sh, a script for building wheels of all of the OpenStack project Python requirements. Since the role depends on
dhellmann.devpi, a devpi server is set up running on the development server. Running
build_wheels.sh will populate the cache for the devpi server and the wheelhouse so that tox environment builds for the unit tests for projects with a lot of dependencies will go more quickly.
Installing the Role
Clone the role from github or use ansible-galaxy to install
dhellmann.openstack-dev. If you use ansible-galaxy, the dependencies
will also be installed automatically.
$ ansible-galaxy install dhellmann.openstack-dev - downloading role 'openstack-dev', owned by dhellmann - downloading role from https://github.com/dhellmann/ansible-openstack-dev/archive/1.0.0.tar.gz - extracting dhellmann.openstack-dev to roles/dhellmann.openstack-dev - dhellmann.openstack-dev was installed successfully - adding dependency: dhellmann.devpi - adding dependency: dhellmann.python-dev - downloading role 'devpi', owned by dhellmann - downloading role from https://github.com/dhellmann/ansible-devpi/archive/1.0.0.tar.gz - extracting dhellmann.devpi to roles/dhellmann.devpi - dhellmann.devpi was installed successfully - downloading role 'python-dev', owned by dhellmann - downloading role from https://github.com/dhellmann/ansible-python-dev/archive/1.0.0.tar.gz - extracting dhellmann.python-dev to roles/dhellmann.python-dev - dhellmann.python-dev was installed successfully
Add the role to your playbook for your development server, and
Cloning the Source
After running the playbook, login to the server and:
$ cd ~/repos $ ./update.sh
If you changed
openstack_dev_repos_dir, replace the
cd command with the appropriate value.
Building Wheel Cache
$ cd ~/repos/openstack/requirements $ ./tools/build_wheels.sh 2.7 3.4
The command will take some time, so you may want to get lunch while you wait.