From 7ac676aaca3f995c35054499e1ecadb8781f5d24 Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Thu, 13 May 2021 12:59:59 +0000 Subject: [PATCH] Test VERSION_INFO default for mirror-info role Change-Id: Ie1e38d68ddda5d24c8a0fe0a6d1098bd89c28f0c --- playbooks/base-test/pre.yaml | 2 +- roles/test-mirror-info/README.rst | 7 ++ roles/test-mirror-info/tasks/main.yaml | 17 ++++ .../templates/mirror_info.sh.j2 | 81 +++++++++++++++++++ 4 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 roles/test-mirror-info/README.rst create mode 100644 roles/test-mirror-info/tasks/main.yaml create mode 100644 roles/test-mirror-info/templates/mirror_info.sh.j2 diff --git a/playbooks/base-test/pre.yaml b/playbooks/base-test/pre.yaml index 5694ea3..7a23039 100644 --- a/playbooks/base-test/pre.yaml +++ b/playbooks/base-test/pre.yaml @@ -37,7 +37,7 @@ roles: - validate-host - prepare-workspace-git - - mirror-info + - test-mirror-info - role: configure-mirrors set_apt_mirrors_trusted: True mirror_use_ssl: True diff --git a/roles/test-mirror-info/README.rst b/roles/test-mirror-info/README.rst new file mode 100644 index 0000000..69b196e --- /dev/null +++ b/roles/test-mirror-info/README.rst @@ -0,0 +1,7 @@ +An ansible test role to configure the ``/etc/ci/mirror_info.sh`` script + +**Role Variables** + +.. zuul:rolevar:: mirror_fqdn + + The base host for mirror servers. diff --git a/roles/test-mirror-info/tasks/main.yaml b/roles/test-mirror-info/tasks/main.yaml new file mode 100644 index 0000000..241b148 --- /dev/null +++ b/roles/test-mirror-info/tasks/main.yaml @@ -0,0 +1,17 @@ +- name: Create /etc/ci + become: yes + file: + path: /etc/ci + state: directory + owner: root + group: root + mode: 0755 + +- name: Install ci_mirror script + become: yes + template: + dest: '/etc/ci/mirror_info.sh' + owner: root + group: root + mode: 0644 + src: mirror_info.sh.j2 diff --git a/roles/test-mirror-info/templates/mirror_info.sh.j2 b/roles/test-mirror-info/templates/mirror_info.sh.j2 new file mode 100644 index 0000000..05a5585 --- /dev/null +++ b/roles/test-mirror-info/templates/mirror_info.sh.j2 @@ -0,0 +1,81 @@ +#!/bin/bash -xe + +# {{ ansible_managed }} + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +export NODEPOOL_MIRROR_HOST={{ mirror_fqdn }} + +# This script generates a descriptor slug to use with AFS, composed of the +# operating system, its version, and the processor architecture. + +# Prepopulate the VERSION_ID from ansible's ansible_distribution_major_version +# since in some cases it may not be assigned in /etc/os-release (for example in +# debian/testing prior to release). Under most circumstances, this will be +# overridden when we source /etc/os-release below +VERSION_ID={{ ansible_distribution_major_version }} + +# Pull in the os release. +# ID is 'fedora', 'centos', 'ubuntu' +# VERSION_ID is '23', '7', '14.04' +# Nothing else is useful and/or reliable across distros +. /etc/os-release + +################################################################################ +# Generate an OS Release Name +OS_TYPE=$ID + +################################################################################ +# Generate a version string. +OS_VERSION=$VERSION_ID +if [ "$OS_TYPE" != "ubuntu" ]; then + OS_VERSION=$(echo $OS_VERSION | cut -d'.' -f1) +fi + +################################################################################ +# Get the processor architecture. +# x86_64, i386, armv7l, armv6l +OS_ARCH=$(uname -m) + +################################################################################ +# Build the name +AFS_SLUG="$OS_TYPE-$OS_VERSION-$OS_ARCH" +AFS_SLUG=$(echo "$AFS_SLUG" | tr '[:upper:]' '[:lower:]') + +export AFS_SLUG +export NODEPOOL_DEBIAN_MIRROR=${NODEPOOL_DEBIAN_MIRROR:-http://$NODEPOOL_MIRROR_HOST/debian} +export NODEPOOL_PYPI_MIRROR=${NODEPOOL_PYPI_MIRROR:-http://$NODEPOOL_MIRROR_HOST/pypi/simple} +export NODEPOOL_WHEEL_MIRROR=${NODEPOOL_WHEEL_MIRROR:-http://$NODEPOOL_MIRROR_HOST/wheel/$AFS_SLUG} +export NODEPOOL_UBUNTU_MIRROR=${NODEPOOL_UBUNTU_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ubuntu} +export NODEPOOL_UBUNTU_PORTS_MIRROR=${NODEPOOL_UBUNTU_PORTS_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ubuntu-ports} +export NODEPOOL_CENTOS_MIRROR=${NODEPOOL_CENTOS_MIRROR:-http://$NODEPOOL_MIRROR_HOST/centos} +export NODEPOOL_DEBIAN_OPENSTACK_MIRROR=${NODEPOOL_DEBIAN_OPENSTACK_MIRROR:-http://$NODEPOOL_MIRROR_HOST/debian-openstack} +export NODEPOOL_EPEL_MIRROR=${NODEPOOL_EPEL_MIRROR:-http://$NODEPOOL_MIRROR_HOST/epel} +export NODEPOOL_FEDORA_MIRROR=${NODEPOOL_FEDORA_MIRROR:-http://$NODEPOOL_MIRROR_HOST/fedora} +export NODEPOOL_OPENSUSE_MIRROR=${NODEPOOL_OPENSUSE_MIRROR:-http://$NODEPOOL_MIRROR_HOST/opensuse} +export NODEPOOL_CEPH_MIRROR=${NODEPOOL_CEPH_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ceph-deb-hammer} +export NODEPOOL_UCA_MIRROR=${NODEPOOL_UCA_MIRROR:-http://$NODEPOOL_MIRROR_HOST/ubuntu-cloud-archive} +# Reverse proxy servers +export NODEPOOL_BUILDLOGS_CENTOS_PROXY=${NODEPOOL_BUILDLOGS_CENTOS_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/buildlogs.centos} +export NODEPOOL_CBS_CENTOS_PROXY=${NODEPOOL_CBS_CENTOS_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/cbs.centos} +export NODEPOOL_DOCKER_REGISTRY_PROXY=${NODEPOOL_DOCKER_REGISTRY_PROXY:-http://$NODEPOOL_MIRROR_HOST:8081/registry-1.docker/} +export NODEPOOL_DOCKER_REGISTRY_V2_PROXY=${NODEPOOL_DOCKER_REGISTRY_V2_PROXY:-http://$NODEPOOL_MIRROR_HOST:8082/} +export NODEPOOL_RDO_PROXY=${NODEPOOL_RDO_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/rdo} +export NODEPOOL_RUGYGEMS_PROXY=${NODEPOOL_RUBYGEMS_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/rubygems/} +export NODEPOOL_NPM_REGISTRY_PROXY=${NODEPOOL_NPM_REGISTRY_PROXY:-http://$NODEPOOL_MIRROR_HOST:8080/registry.npmjs} + +# NOTE(mnaser): The following three proxies are consumed by OpenStack Ansible. They do not contain `http://` because we +# can only override hosts, not the entire base URL. +export NODEPOOL_LXC_IMAGE_PROXY=${NODEPOOL_LXC_IMAGE_PROXY:-$NODEPOOL_MIRROR_HOST:8080/images.linuxcontainers} +export NODEPOOL_PERCONA_PROXY=${NODEPOOL_PERCONA_PROXY:-$NODEPOOL_MIRROR_HOST:8080/percona} +export NODEPOOL_MARIADB_PROXY=${NODEPOOL_MARIADB_PROXY:-$NODEPOOL_MIRROR_HOST:8080/MariaDB}