project-config/nodepool/elements
Clark Boylan eceb8690f6 Chown the /opt/git repo cache to zuul:zuul
Latest git packages on Ubuntu (and possibly other locations in the
future) don't allow locally cloning repos owned by a different user by
default. Attempting to do so results in this error:

  fatal: detected dubious ownership in repository at '/opt/git/opendev.org/foo/bar/.git'
  To add an exception for this directory, call:

      git config --global --add safe.directory /opt/git/opendev.org/foo/bar/.git
  fatal: Could not read from remote repository.

  Please make sure you have the correct access rights
  and the repository exists.

Currently the /opt/git repos are owned by root:root. We expect that
zuul will be the most common user to interact with these cached repos so
we chown to zuul:zuul in order to avoid these problems as much as
possible. Any cases not using zuul will have to determine a path foward
for that special circumstances.

Change-Id: I7cb21869bae42baed5027a9380f60762ab8944e0
2024-05-29 14:35:55 -07:00
..
cache-devstack Cache new cirros images 2023-06-01 16:26:54 +00:00
control-plane-minimal Fix new dib-lint errors 2020-03-11 10:10:57 +11:00
infra-package-needs Support Ubuntu 24.04 in nodepool elements 2024-04-17 17:58:28 +00:00
initialize-urandom Fix flake8 2017-10-21 18:37:10 +02:00
nodepool-base Fix unbound setup for ubuntu-noble 2024-05-22 19:35:36 +00:00
openstack-repos nodepool elements: use yaml.safe_load 2021-11-05 11:25:17 +11:00
zuul-worker Chown the /opt/git repo cache to zuul:zuul 2024-05-29 14:35:55 -07:00
bindep-fallback.txt Drop libvirt-python from suse in bindep fallback 2023-09-06 15:15:03 +00:00
README.rst Retire devstack-gate 2024-05-14 15:16:58 -07:00

Using diskimage-builder to build opendev-ci nodes

In addition to being able to just download and consume images that are the same as what run devstack, 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/opendev-ci-node-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 opendev-ci-node-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.