copr: backend: image preparation scripting
This commit is contained in:
parent
36ca7d6e17
commit
12d490432f
4 changed files with 86 additions and 0 deletions
11
roles/copr/backend/files/copr-image-delete-os.sh
Executable file
11
roles/copr/backend/files/copr-image-delete-os.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
. /home/copr/cloud/keystonerc_proper_tenant
|
||||||
|
|
||||||
|
set +x
|
||||||
|
|
||||||
|
openstack image set \
|
||||||
|
--unprotected \
|
||||||
|
"$1"
|
||||||
|
|
||||||
|
openstack image delete "$1"
|
11
roles/copr/backend/files/copr-image-fixup-snapshot-os.sh
Executable file
11
roles/copr/backend/files/copr-image-fixup-snapshot-os.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
. /home/copr/cloud/keystonerc_proper_tenant
|
||||||
|
|
||||||
|
set +x
|
||||||
|
|
||||||
|
openstack image set \
|
||||||
|
--public \
|
||||||
|
--protected \
|
||||||
|
--property hw_rng_model=virtio \
|
||||||
|
"$1"
|
53
roles/copr/backend/files/copr-image-prepare-os.sh
Executable file
53
roles/copr/backend/files/copr-image-prepare-os.sh
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
. /home/copr/cloud/keystonerc_proper_tenant
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
arch=$1
|
||||||
|
|
||||||
|
die() { echo "$*" >&2 ; exit 1 ; }
|
||||||
|
|
||||||
|
case $arch in
|
||||||
|
ppc64le) playbook=/home/copr/provision/builderpb_nova_ppc64le.yml ;;
|
||||||
|
x86_64) playbook=/home/copr/provision/builderpb_nova.yml ;;
|
||||||
|
*) die "bad architecture '$arch'" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
logfile="/tmp/prepare-image-os-$arch.log"
|
||||||
|
|
||||||
|
ansible_options=( -e prepare_base_image=1 )
|
||||||
|
test -z "$2" || ansible_options+=( -e image_name="$2" )
|
||||||
|
|
||||||
|
ansible-playbook "$playbook" "${ansible_options[@]}" |& tee "$logfile"
|
||||||
|
|
||||||
|
vm_name=$(sed -n 's/.*vm_name=\(\w\+\).*/\1/p' "$logfile" | head -1)
|
||||||
|
test -n "$vm_name"
|
||||||
|
ip=$(sed -n 's/.*VM_IP=\([0-9\.]\+\).*/\1/p' "$logfile" | head -1)
|
||||||
|
test -n "$ip"
|
||||||
|
|
||||||
|
fedora=$(ssh "root@$ip" 'rpm --eval %fedora')
|
||||||
|
|
||||||
|
new_volume_name="copr-builder-$arch-f$fedora-$(date +"%Y%m%d_%H%M%S")"
|
||||||
|
|
||||||
|
# we can not just do
|
||||||
|
# $ nova-3 image-create "$vm_name" "$new_volume_name" --poll
|
||||||
|
# because it throws error:
|
||||||
|
# ERROR (ClientException): The server has either erred or is incapable of
|
||||||
|
# performing the requested operation. (HTTP 500) (Request-ID:...)
|
||||||
|
|
||||||
|
nova-3 stop "$vm_name"
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
Please go to https://fedorainfracloud.org/ page, log-in and find the instance
|
||||||
|
|
||||||
|
$vm_name
|
||||||
|
|
||||||
|
Check that it is in SHUTOFF state. Create a snapshot from that instance, name
|
||||||
|
it "$new_volume_name". Once snapshot is saved, run:
|
||||||
|
|
||||||
|
$ copr-image-fixup-snapshot-os.sh $new_volume_name
|
||||||
|
|
||||||
|
And continue with
|
||||||
|
https://docs.pagure.org/copr.copr/how_to_upgrade_builders.html#how-to-upgrade-builders
|
||||||
|
EOF
|
|
@ -28,6 +28,10 @@
|
||||||
- php-cli
|
- php-cli
|
||||||
- cronolog
|
- cronolog
|
||||||
|
|
||||||
|
- name: install openstackclient for image preparation
|
||||||
|
dnf: state=present name=python3-openstackclient
|
||||||
|
when: devel|bool
|
||||||
|
|
||||||
# disable this in favor of excluding it in /etc/dnf/dnf.conf.
|
# disable this in favor of excluding it in /etc/dnf/dnf.conf.
|
||||||
# https://github.com/ansible/ansible/issues/33187
|
# https://github.com/ansible/ansible/issues/33187
|
||||||
#- name: install python2-novaclient version that actually works with the current OpenStack deployment
|
#- name: install python2-novaclient version that actually works with the current OpenStack deployment
|
||||||
|
@ -179,6 +183,13 @@
|
||||||
tags:
|
tags:
|
||||||
- provision_config
|
- provision_config
|
||||||
|
|
||||||
|
- name: copy image preparation scripts
|
||||||
|
copy: src="{{ item }}" dest="/usr/local/bin/{{ item }}"
|
||||||
|
owner=root mode=755
|
||||||
|
with_fileglob:
|
||||||
|
- copr-image-*.sh
|
||||||
|
when: devel|bool
|
||||||
|
|
||||||
- name: testing fixture
|
- name: testing fixture
|
||||||
copy: dest="/home/copr/cloud/ec2rc.variable" content=""
|
copy: dest="/home/copr/cloud/ec2rc.variable" content=""
|
||||||
when: devel|bool
|
when: devel|bool
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue