copr-builders: instantiate Power9 Oregon University OpenStack

This commit is contained in:
Pavel Raiskup 2022-01-12 15:29:34 +01:00
parent 88c881048d
commit e8bf32eb08
10 changed files with 113 additions and 5 deletions

View file

@ -52,6 +52,8 @@ copr_builder_images:
x86_64: copr-builder-x86_64-20211012_115536
ibm_cloud:
s390x: r022-f2fa7740-6d08-47e6-9201-823f986395de
osuosl:
ppc64le: copr-builder-ppc64le-20220112_131945
copr_messaging: true
datacenter: aws
devel: false

View file

@ -51,6 +51,8 @@ copr_builder_images:
x86_64: copr-builder-x86_64-20211012_115536
ibm_cloud:
s390x: r022-f2fa7740-6d08-47e6-9201-823f986395de
osuosl:
ppc64le: copr-builder-ppc64le-20220112_131945
copr_messaging: true
datacenter: aws
devel: true

View file

@ -233,6 +233,7 @@
vars:
cloud_vars: true
provision_directory: /home/copr/provision
provision_user: copr
tags:
- always

View file

@ -10,6 +10,7 @@
- python3-ibm-vpc
- resalloc
- resalloc-server
- resalloc-openstack
- virt-install
- name: See if postgreSQL is initialized
@ -45,6 +46,7 @@
- always
vars:
cloud_vars: true
provision_user: resalloc
- name: install .ansible.cfg for {{ provision_user }} user
copy: src=ansible.cfg dest=/var/lib/resallocserver/.ansible.cfg
@ -61,8 +63,10 @@
template: src="resalloc/{{ item }}.j2" dest="/var/lib/resallocserver/resalloc_provision/{{ item }}"
mode=755
with_items:
- vm-delete
- vm-release
- ibm-cloud-vm
- osuosl-vm
tags:
- provision_config

View file

@ -33,6 +33,7 @@
tags:
- provision_config
when:
# for the hypervisor use-case
- cloud_vars is not defined
- name: templated provision scripts
@ -84,3 +85,13 @@
path="{{ provision_directory }}/filter_plugins/os_nova.py"
tags:
- provision_config
- name: install the Oregon State University OpenStack token file on BE/HV
template:
src: "{{ roles_path }}/copr/backend/templates/provision/rc-osuosl.sh.j2"
dest: "{{ provision_directory }}/.rc-osuosl.sh"
owner: "{{ provision_user }}"
group: "{{ provision_user }}"
mode: 0600
tags:
- provision_config

View file

@ -0,0 +1,39 @@
#!/usr/bin/env bash
# To use an OpenStack cloud you need to authenticate against the Identity
# service named keystone, which returns a **Token** and **Service Catalog**.
# The catalog contains the endpoints for all services the user/tenant has
# access to - such as Compute, Image Service, Identity, Object Storage, Block
# Storage, and Networking (code-named nova, glance, keystone, swift,
# cinder, and neutron).
#
# *NOTE*: Using the 3 *Identity API* does not necessarily mean any other
# OpenStack API is version 3. For example, your cloud provider may implement
# Image API v1.1, Block Storage API v2, and Compute API v2.0. OS_AUTH_URL is
# only for the Identity API served through keystone.
export OS_AUTH_URL=https://openpower-controller.osuosl.org:5000/v3
# With the addition of Keystone we have standardized on the term **project**
# as the entity that owns the resources.
export OS_PROJECT_ID=445d7c05a6cb4300a1bfb155dd92d84f
export OS_PROJECT_NAME="Fedora Copr"
export OS_USER_DOMAIN_NAME="Default"
if [ -z "$OS_USER_DOMAIN_NAME" ]; then unset OS_USER_DOMAIN_NAME; fi
export OS_PROJECT_DOMAIN_ID="default"
if [ -z "$OS_PROJECT_DOMAIN_ID" ]; then unset OS_PROJECT_DOMAIN_ID; fi
# unset v2.0 items in case set
unset OS_TENANT_ID
unset OS_TENANT_NAME
# In addition to the owning entity (tenant), OpenStack stores the entity
# performing the action as the **user**.
export OS_USERNAME="coprteam"
# With Keystone you pass the keystone password.
export OS_PASSWORD="{{ copr_openstack_osuosl_org_password }}"
# If your configuration has multiple regions, we set that information here.
# OS_REGION_NAME is optional and only valid in certain environments.
export OS_REGION_NAME="RegionOne"
# Don't leave a blank variable, unset it if it was empty
if [ -z "$OS_REGION_NAME" ]; then unset OS_REGION_NAME; fi
export OS_INTERFACE=public
export OS_IDENTITY_API_VERSION=3

View file

@ -0,0 +1,23 @@
#! /bin/sh
export ANSIBLE_HOST_KEY_CHECKING=False
. "{{ provision_directory }}/.rc-osuosl.sh"
set -e
set -x
test -n "$RESALLOC_NAME"
flavor=db5a95e1-5bf6-4bb4-9489-70362d936cd1 # name: 'fedora.copr'
network=a5bd5b53-1dc4-423c-a854-aa1cc9ee5456 # name: 'public'
playbook="{{ provision_directory }}/libvirt-provision.yml"
resalloc-openstack-new \
--image "{{ copr_builder_images.osuosl.ppc64le }}" \
--flavor "$flavor" \
--name "$RESALLOC_NAME" \
--post-command "set -x ; ansible-playbook $playbook -i \"\$RESALLOC_OS_IP,\" >&2 " \
--key-pair-id copr-builder \
--alloc-volume 32 \
--nic net-id="$network" \
--print-ip

View file

@ -33,7 +33,7 @@ aws_x86_64_{% if spot %}spot{% else %}normal{% endif %}_{% if devel %}dev{% else
{% else %}
cmd_new: copr-resalloc-aws-new-x86_64
{% endif %}
cmd_delete: "/var/lib/resallocserver/provision/vm-delete"
cmd_delete: "/var/lib/resallocserver/resalloc_provision/vm-delete"
cmd_livecheck: "resalloc-check-vm-ip"
cmd_release: "/var/lib/resallocserver/resalloc_provision/vm-release"
livecheck_period: 180
@ -57,7 +57,7 @@ aws_aarch64_{% if spot %}spot{% else %}normal{% endif %}_{% if devel %}dev{% els
{% else %}
cmd_new: copr-resalloc-aws-new-aarch64
{% endif %}
cmd_delete: "/var/lib/resallocserver/provision/vm-delete"
cmd_delete: "/var/lib/resallocserver/resalloc_provision/vm-delete"
cmd_livecheck: "resalloc-check-vm-ip"
cmd_release: "/var/lib/resallocserver/resalloc_provision/vm-release"
livecheck_period: 180
@ -96,7 +96,7 @@ copr_hv_x86_64_{{ hv }}_{% if devel %}dev{% else %}prod{% endif %}:
- hypervisor_x86_64
- hypervisor_x86_64_{{ hv }}
cmd_new: "/var/lib/resallocserver/provision/libvirt-new --swap-vol-size 168"
cmd_delete: "/var/lib/resallocserver/provision/vm-delete"
cmd_delete: "/var/lib/resallocserver/resalloc_provision/vm-delete"
cmd_livecheck: "resalloc-check-vm-ip"
cmd_release: "/var/lib/resallocserver/resalloc_provision/vm-release"
livecheck_period: 180
@ -128,7 +128,7 @@ copr_hv_ppc64le_{{ hv }}_{% if devel %}dev{% else %}prod{% endif %}:
- hypervisor_ppc64le
- hypervisor_ppc64le_{{ hv }}
cmd_new: "/var/lib/resallocserver/provision/libvirt-new --swap-vol-size 168"
cmd_delete: "/var/lib/resallocserver/provision/vm-delete"
cmd_delete: "/var/lib/resallocserver/resalloc_provision/vm-delete"
cmd_livecheck: "resalloc-check-vm-ip"
cmd_release: "/var/lib/resallocserver/resalloc_provision/vm-release"
livecheck_period: 180
@ -154,7 +154,7 @@ copr_ibm_cloud_s390x_tokyo_{% if devel %}dev{% else %}prod{% endif %}:
- ibm_cloud
- tokyo
cmd_new: '/var/lib/resallocserver/resalloc_provision/ibm-cloud-vm --log-level debug create "$RESALLOC_NAME"'
cmd_delete: "/var/lib/resallocserver/provision/vm-delete"
cmd_delete: "/var/lib/resallocserver/resalloc_provision/vm-delete"
cmd_livecheck: "resalloc-check-vm-ip"
cmd_release: "/var/lib/resallocserver/resalloc_provision/vm-release"
livecheck_period: 180
@ -163,6 +163,25 @@ copr_ibm_cloud_s390x_tokyo_{% if devel %}dev{% else %}prod{% endif %}:
reuse_max_time: 1800
{% endif %}
{% if devel %}
# Power9 VMs in openpower-controller.osuosl.org
copr_osuosl_p09_{% if devel %}dev{% else %}prod{% endif %}:
max: 3
max_prealloc: 1
max_starting: 1
tags:
- none_currently_just_experimenting
cmd_new: '/var/lib/resallocserver/resalloc_provision/osuosl-vm'
cmd_delete: "/var/lib/resallocserver/resalloc_provision/vm-delete"
cmd_livecheck: "resalloc-check-vm-ip"
cmd_release: "/var/lib/resallocserver/resalloc_provision/vm-release"
livecheck_period: 180
reuse_opportunity_time: 180
reuse_max_count: 8
reuse_max_time: 1800
{% endif %}
{{ aws_x86_64(builders.aws.x86_64[0], builders.aws.x86_64[1],
builders.aws.x86_64[2])

View file

@ -14,6 +14,12 @@ case "$RESALLOC_POOL_ID" in
exec /usr/bin/resalloc-aws-delete --aws-profile default
exit 1
;;
copr_osuosl_p09_*)
# Delegate the rest of this task to an OpenStack specific script.
. "{{ provision_directory }}/.rc-osuosl.sh"
resalloc-openstack-delete --delete-everything "$RESALLOC_NAME"
exit 1
;;
*s390x*)
# Delegate the rest of the task to the IBM Cloud specific script.
exec /var/lib/resallocserver/resalloc_provision/ibm-cloud-vm --log-level debug delete "$RESALLOC_NAME"

View file

@ -182,4 +182,5 @@
include_tasks: "{{ roles_path }}/copr/backend/tasks/setup_provisioning_environment.yml"
vars:
provision_directory: /home/copr/provision
provision_user: copr
tags: always