project-config/nodepool/elements
Clark Boylan 3e57097f50 Install setfacl on test nodes
Ansible v5 appears to rely on setfacl more than ansible 2.9 did when
running tasks as a different unprivileged user than the one currently
running ansible. Without setfacl installed we get errors like:

  Failed to set permissions on the temporary files Ansible needs to
  create when becoming an unprivileged user (rc: 1, err: chmod:
  invalid mode: ‘A+user:stack:rx:allow’ Try 'chmod --help' for more
  information.}). For information on working around this, see
  https://docs.ansible.com/ansible-core/2.12/user_guide/become.html#risks-of-becoming-an-unprivileged-user

Installing setfacl makes the error go away as ansible get use setfacl
instead of chown/chmod.

Ubuntu, Debian, Fedora, CentOS, and OpenSUSE all appear to call the
package 'acl'. We assume that openeuler and rocky inherit this package
name. That means we only need to override the package name for Gentoo.

Change-Id: I71736578dbd5e0683b18023e73ab44255eb6eb18
2022-05-24 13:02:25 -07:00
..
cache-devstack Add py36 variant of get-pip.py 2022-02-02 16:42:04 +01:00
control-plane-minimal Fix new dib-lint errors 2020-03-11 10:10:57 +11:00
infra-package-needs Install setfacl on test nodes 2022-05-24 13:02:25 -07:00
initialize-urandom Fix flake8 2017-10-21 18:37:10 +02:00
nodepool-base Fix selinux context for unbound.log 2022-05-12 19:25:06 +00:00
openstack-repos nodepool elements: use yaml.safe_load 2021-11-05 11:25:17 +11:00
zuul-worker zuul-worker: remove additional install of apt-transport-https 2020-04-03 09:20:21 -05:00
bindep-fallback.txt Remove references to OpenSUSE 423 2019-10-14 09:14:08 -07:00
README.rst Update doc to have 'debootstrap' dep and describe minimal 2016-10-12 19:27:05 -07:00

Using diskimage-builder to build devstack-gate nodes

In addition to being able to just download and consume images that are the same as what run devstack-gate, it's easy to make your own for local dev or testing - or just for fun.

Install diskimage-builder

Install the dependencies:

sudo apt-get install kpartx qemu-utils curl python-yaml debootstrap

Install diskimage-builder:

sudo -H pip install diskimage-builder

Build an image

Building an image is simple, we have a script!

bash tools/build-image.sh

See the script for environment variables to set distribution, etc. By default it builds an ubuntu-minimal based image. You should be left with a .qcow2 image file of your selected distribution.

Infra uses the -minimal build type for building Ubuntu/CentOS/Fedora. For example: ubuntu-minimal.

It is a good idea to set TMP_DIR to somewhere with plenty of space to avoid the disappointment of a full-disk mid-way through the script run.

While testing, consider exporting DIB_OFFLINE=true, to skip updating the cache.

Mounting the image

If you would like to examine the contents of the image, you can mount it on a loopback device using qemu-nbd.

sudo apt-get install qemu-utils
sudo modprobe nbd max_part=16
sudo mkdir -p /tmp/newimage
sudo qemu-nbd -c /dev/nbd1 /path/to/devstack-gate-precise.qcow2
sudo mount /dev/nbd1p1 /tmp/newimage

or use the scripts

sudo apt-get install qemu-utils
sudo modprobe nbd max_part=16
sudo tools/mount-image.sh devstack-gate-precise.qcow2
sudo tools/umount-image.sh

Other things

It's a qcow2 image, so you can do tons of things with it. You can upload it to glance, you can boot it using kvm, and you can even copy it to a cloud server, replace the contents of the server with it and kexec the new kernel.