Note
There’s currently no OpenStack instance in Fedora infrastructure, so this documentation exists for the historical reference (we might get another OpenStack instance in the future).
Prepare OpenStack source images¶
(x86_64 and ppc64le architectures)
For OpenStack, there is an image registry on OpenStack images dashboard. By
default you see only the project images; to see all of them, click on the
Public
button.
Search for the Fedora-Cloud-Base-*
images of the particular Fedora. Are
both x86_64 and ppc64le images available? Then you can jump right to the next
section.
Download the image, and upload it to the infra OpenStack. Be careful to keep
sane Fedora-Cloud-Base*
naming, and to make it public, so others can later
use it as well:
$ wget <THE_QCOW_IMAGE_URL>
.. downloaded Fedora-Cloud-Base-30-1.2.x86_64.qcow2 ..
$ source <THE_OPENSTACK_RC_FILE>
# hw_rng_model=virtio is needed to guarantee enough entropy on VMs
# --public is needed to publish it to everyone
# --protected so other openstack users can not delete it
$ openstack image create \
--file Fedora-Cloud-Base-30-1.2.x86_64.qcow2 \
--public \
--protected \
--disk-format qcow2 \
--container-format bare \
--property architecture=x86_64 \
--property hw_rng_model=virtio \
Fedora-Cloud-Base-30-1.2.x86_64
Note also the --property hw_rng_model=virtio
option which guarantees that
the VMs won’t wait indefinitely for random seed.
Prepare VM for snapshot¶
Open a ssh connection to copr-be-dev.cloud.fedoraproject.org
and run:
# su - copr
$ copr-builder-image-prepare-cloud.sh os:x86_64 Fedora-Cloud-Base-30-1.2.x86_64 # or ppc64le
... snip ...
TASK [disable offloading] *****************************************************
Wednesday 14 August 2019 13:31:27 +0000 (0:00:05.603) 0:03:47.402 ******
changed: [172.25.150.72]
... snip ....
It can fail (for various reasons, missing packages, changes in Fedora, etc.). But after running the script, you will get an IP address of a spawned builder. You can ssh into that builder, make changes and try to debug. Then, knowing where the problem is - fix the following playbook files:
/home/copr/provision/provision_builder_tasks.yml
/home/copr/provision/builderpb_nova.yml
/home/copr/provision/builderpb_nova_ppc64le.yml
Repeat the fixing of playbooks till the script finishes properly:
$ copr-builder-image-prepare-cloud.sh os:x86_64 Fedora-Cloud-Base-30-1.2.x86_64
... see the output instructions ...
TASK [disable offloading] *****************************************************
Wednesday 14 August 2019 13:31:27 +0000 (0:00:05.603) 0:03:47.402 ******
changed: [172.25.150.72]
... snip ....
Request to stop server Copr_builder_20901443 has been accepted.
Please go to https://fedorainfracloud.org/ page, log-in and find the instance
Copr_builder_20901443
Check that it is in SHUTOFF state. Create a snapshot from that instance, name
it "copr-builder-x86_64-f30-20190814_133128". Once snapshot is saved, run:
$ copr-builder-image-fixup-snapshot-os.sh copr-builder-x86_64-f30-20190814_133128
And continue with
https://docs.pagure.org/copr.copr/how_to_upgrade_builders.html#how-to-upgrade-builders
Once done, continue with the manual steps from the instructions on the
command-line output (create image snapshot and run the
copr-builder-image-fixup-snapshot-os.sh
script). Those manual steps could be done
automatically, but Fedora Infra OpenStack refuses snapshot API requests for
some reason.
Finishing up OpenStack images¶
Since you have a new image name(s) which can be used on builders, you can
configure copr_builder_images
option in
/home/copr/provision/nova_cloud_vars.yml
variable file. Since now, the
development backend should spawn from new image. You can try to kill all
the old builders, and check the spawner log what is happening:
[copr@copr-be-dev ~][STG]$ cleanup_vm_nova.py --kill-also-unused
[copr@copr-be-dev ~][STG]$ tail -f /var/log/copr-backend/spawner.log
Try to build some packages and you are done.