From f283d70a106ffd40f9bc18d7ada8b643591c5373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Andr=C3=A9?= Date: Thu, 13 Apr 2017 11:13:57 +0200 Subject: [PATCH] Restore elements still in use This partially reverts commit c653eaee1c4091701e8da0f2c6f193e7126d8c49 that was a bit too aggressived and removed elements still in use by the gate-tripleo-buildimage-overcloud-full-centos-7 CI job. [1] http://logs.openstack.org/73/455373/1/check/gate-tripleo-buildimage-overcloud-full-centos-7/a7f385b/console.html#_2017-04-13_06_18_00_002828 Change-Id: I98b31f039b144357b00c0c8f64bead033804ce8f --- elements/delorean-repo/README.md | 18 +++++++ elements/delorean-repo/element-deps | 1 + elements/delorean-repo/pkg-map | 5 ++ .../pre-install.d/01-delorean-clean-metadata | 5 ++ .../pre-install.d/01-delorean-repo | 25 +++++++++ .../pre-install.d/03-install-yum-priorities | 5 ++ elements/hosts/README.md | 5 ++ elements/hosts/element-deps | 2 + .../os-refresh-config/configure.d/51-hosts | 51 +++++++++++++++++++ elements/hosts/package-installs.yaml | 1 + elements/hosts/pkg-map | 7 +++ 11 files changed, 125 insertions(+) create mode 100644 elements/delorean-repo/README.md create mode 100644 elements/delorean-repo/element-deps create mode 100644 elements/delorean-repo/pkg-map create mode 100755 elements/delorean-repo/pre-install.d/01-delorean-clean-metadata create mode 100755 elements/delorean-repo/pre-install.d/01-delorean-repo create mode 100755 elements/delorean-repo/pre-install.d/03-install-yum-priorities create mode 100644 elements/hosts/README.md create mode 100644 elements/hosts/element-deps create mode 100755 elements/hosts/os-refresh-config/configure.d/51-hosts create mode 100644 elements/hosts/package-installs.yaml create mode 100644 elements/hosts/pkg-map diff --git a/elements/delorean-repo/README.md b/elements/delorean-repo/README.md new file mode 100644 index 000000000..fa3c6f881 --- /dev/null +++ b/elements/delorean-repo/README.md @@ -0,0 +1,18 @@ +Configure the image to pull packages from a Delorean repo + +This element configures the image such that it downloads +packages from the specified Delorean repository. To use set +DELOREAN\_REPO\_URL to the Delorean repo you'd like to use. +This can be 'current' or any revision in the past that you'd +like to use. Example: + + export DELOREAN\_REPO\_URL=http://localhost/~user/repos/current + +Delorean is a tool that can be used to automate building upstream +packages: + + https://github.com/openstack-packages/delorean + +The Delorean tool currently supports Fedora packages and Yum +repositories. Support for other distributions may be added in +the future. diff --git a/elements/delorean-repo/element-deps b/elements/delorean-repo/element-deps new file mode 100644 index 000000000..ef25eec63 --- /dev/null +++ b/elements/delorean-repo/element-deps @@ -0,0 +1 @@ +pkg-map diff --git a/elements/delorean-repo/pkg-map b/elements/delorean-repo/pkg-map new file mode 100644 index 000000000..0339fd475 --- /dev/null +++ b/elements/delorean-repo/pkg-map @@ -0,0 +1,5 @@ +{ + "default": { + "yum_plugin_priorities_package": "yum-plugin-priorities" + } +} diff --git a/elements/delorean-repo/pre-install.d/01-delorean-clean-metadata b/elements/delorean-repo/pre-install.d/01-delorean-clean-metadata new file mode 100755 index 000000000..a4d955098 --- /dev/null +++ b/elements/delorean-repo/pre-install.d/01-delorean-clean-metadata @@ -0,0 +1,5 @@ +#!/bin/bash +set -e +set -o xtrace + +yum clean metadata diff --git a/elements/delorean-repo/pre-install.d/01-delorean-repo b/elements/delorean-repo/pre-install.d/01-delorean-repo new file mode 100755 index 000000000..600c2dc0f --- /dev/null +++ b/elements/delorean-repo/pre-install.d/01-delorean-repo @@ -0,0 +1,25 @@ +#!/bin/bash +set -e +set -o xtrace + +export DELOREAN_REPO_FILE=${DELOREAN_REPO_FILE:-"delorean.repo"} + +# delorean requires delorean-deps +if [[ "rhel7 centos7" =~ "$DISTRO_NAME" ]]; then + + if [ -z "$STABLE_RELEASE" ]; then + curl -L http://trunk.rdoproject.org/centos7/delorean-deps.repo -o /etc/yum.repos.d/delorean-deps.repo + else + curl -L http://trunk.rdoproject.org/centos7-$STABLE_RELEASE/delorean-deps.repo -o /etc/yum.repos.d/delorean-deps.repo + fi + +elif [[ "fedora" =~ "$DISTRO_NAME" ]]; then + curl -L http://trunk.rdoproject.org/f$DIB_RELEASE/delorean-deps.repo -o /etc/yum.repos.d/delorean-deps.repo +fi + +if [ -n "$DELOREAN_REPO_URL" ]; then + curl -L $DELOREAN_REPO_URL/$DELOREAN_REPO_FILE -o /etc/yum.repos.d/$DELOREAN_REPO_FILE +else + echo "Please configure a DELOREAN_REPO_URL." + exit 1 +fi diff --git a/elements/delorean-repo/pre-install.d/03-install-yum-priorities b/elements/delorean-repo/pre-install.d/03-install-yum-priorities new file mode 100755 index 000000000..846e07480 --- /dev/null +++ b/elements/delorean-repo/pre-install.d/03-install-yum-priorities @@ -0,0 +1,5 @@ +#!/bin/bash +set -e +set -o xtrace + +install-packages -m delorean-repo yum_plugin_priorities_package diff --git a/elements/hosts/README.md b/elements/hosts/README.md new file mode 100644 index 000000000..414c02113 --- /dev/null +++ b/elements/hosts/README.md @@ -0,0 +1,5 @@ +Permit injecting content into /etc/hosts from heat + +# Configuration + + hosts: '192.0.2.1 my-host.example.com' diff --git a/elements/hosts/element-deps b/elements/hosts/element-deps new file mode 100644 index 000000000..9d8b6b7a5 --- /dev/null +++ b/elements/hosts/element-deps @@ -0,0 +1,2 @@ +os-apply-config +os-refresh-config diff --git a/elements/hosts/os-refresh-config/configure.d/51-hosts b/elements/hosts/os-refresh-config/configure.d/51-hosts new file mode 100755 index 000000000..32ac86a8c --- /dev/null +++ b/elements/hosts/os-refresh-config/configure.d/51-hosts @@ -0,0 +1,51 @@ +#!/bin/bash + +set -eux +set -o pipefail + +write_entries() { + local file="$1" + local entries="$2" + + # Don't do anything if the file isn't there + if [ ! -f "$file" ]; then + return + fi + + if grep -q "^# HEAT_HOSTS_START" "$file"; then + temp=$(mktemp) + ( + sed '/^# HEAT_HOSTS_START/,$d' "$file" + echo -ne "\n# HEAT_HOSTS_START - Do not edit manually within this section!\n" + echo "$entries" + echo -ne "# HEAT_HOSTS_END\n\n" + sed '1,/^# HEAT_HOSTS_END/d' "$file" + ) > "$temp" + echo "INFO: Updating hosts file $file, check below for changes" + diff "$file" "$temp" || true + cat "$temp" > "$file" + else + echo -ne "\n# HEAT_HOSTS_START - Do not edit manually within this section!\n" >> "$file" + echo "$entries" >> "$file" + echo -ne "# HEAT_HOSTS_END\n\n" >> "$file" + fi + +} + +ENTRIES=$(os-apply-config --key hosts --type raw --key-default '' | tr '[A-Z]' '[a-z]' | sed -e 's/\\n/\n/g' -e '/^$/d') +if [ ! -z "$ENTRIES" ]; then + # cloud-init files are /etc/cloud/templates/hosts.OSNAME.tmpl + DIST=$(lsb_release -is | tr -s '[A-Z]' '[a-z]') + case $DIST in + fedora|redhatenterpriseserver) + name="redhat" + ;; + *) + name="$DIST" + ;; + esac + write_entries "/etc/cloud/templates/hosts.${name}.tmpl" "$ENTRIES" + write_entries "/etc/hosts" "$ENTRIES" +else + echo "No hosts in Heat, nothing written." +fi diff --git a/elements/hosts/package-installs.yaml b/elements/hosts/package-installs.yaml new file mode 100644 index 000000000..63257d7b2 --- /dev/null +++ b/elements/hosts/package-installs.yaml @@ -0,0 +1 @@ +lsb_release: diff --git a/elements/hosts/pkg-map b/elements/hosts/pkg-map new file mode 100644 index 000000000..b64cefb3e --- /dev/null +++ b/elements/hosts/pkg-map @@ -0,0 +1,7 @@ +{ + "family": { + "redhat": { + "lsb_release": "redhat-lsb-core" + } + } +}