[TryMOS] Add binary utils to image during its build
The yq, cfssl and cfssljson have fixed version and can be added
to the result image during its build
Related-Prod: PRODX-39329
Change-Id: Iaca737ab8a7e0b12600f2bcc6b5a18296bd321a4
diff --git a/de/heat-templates/scripts/instance_boot.sh b/de/heat-templates/scripts/instance_boot.sh
index 7a7a835..5d2cb9b 100644
--- a/de/heat-templates/scripts/instance_boot.sh
+++ b/de/heat-templates/scripts/instance_boot.sh
@@ -234,8 +234,10 @@
fi
install_pkgs $pkg_list
# Since version 4 yq uses another syntax
- curl --retry 6 --retry-delay 5 -L ${BINARY_BASE_URL}/openstack/bin/utils/yq/yq-v3.3.2 -o /usr/bin/yq
- chmod +x /usr/bin/yq
+ if [[ ! -f /usr/bin/yq ]]; then
+ curl --retry 6 --retry-delay 5 -L ${BINARY_BASE_URL}/openstack/bin/utils/yq/yq-v3.3.2 -o /usr/bin/yq
+ chmod +x /usr/bin/yq
+ fi
}
function enable_iscsi {
diff --git a/trymos/image_build/files/usr/share/trymos/launch.sh b/trymos/image_build/files/usr/share/trymos/launch.sh
index e07c46f..ff6002f 100755
--- a/trymos/image_build/files/usr/share/trymos/launch.sh
+++ b/trymos/image_build/files/usr/share/trymos/launch.sh
@@ -263,15 +263,9 @@
pushd $tmpd
info "Generating SSL certificates."
-
- for ssl_app in cfssl cfssljson; do
- curl --retry 5 --retry-delay 10 -L ${MIRANTIS_ARTIFACTORY_URL}/openstack/bin/utils/cfssl/${ssl_app} -o ${tmpd}/${ssl_app} && chmod +x ${tmpd}/${ssl_app}
- done
-
- # Generate SSL certs
yq w ${CSR_CONF} "CN" "*.openstack.svc.${LOCAL_DOMAIN}" | \
yq w -j - "hosts[+]" "*.openstack.svc.${LOCAL_DOMAIN}" | \
- ${tmpd}/cfssl gencert -ca=${CERT_REPO_DIR}/ca.crt -ca-key=${CERT_REPO_DIR}/ca.key - | ${tmpd}/cfssljson -bare ${SSL_BARE_NAME}
+ cfssl gencert -ca=${CERT_REPO_DIR}/ca.crt -ca-key=${CERT_REPO_DIR}/ca.key - | cfssljson -bare ${SSL_BARE_NAME}
mv ${tmpd}/${SSL_BARE_NAME}* ${CERT_REPO_DIR}
popd
}
diff --git a/trymos/image_build/scripts/binary.sh b/trymos/image_build/scripts/binary.sh
new file mode 100644
index 0000000..f0d41ea
--- /dev/null
+++ b/trymos/image_build/scripts/binary.sh
@@ -0,0 +1,20 @@
+set -ex
+
+LOCAL_BINARY_PATH='/usr/bin'
+
+declare -A binaries=(
+ ["${LOCAL_BINARY_PATH}/yq"]="${BINARY_BASE_URL}/openstack/bin/utils/yq/yq-v3.3.2"
+ ["${LOCAL_BINARY_PATH}/cfssl"]="${BINARY_BASE_URL}/openstack/bin/utils/cfssl/cfssl"
+ ["${LOCAL_BINARY_PATH}/cfssljson"]="${BINARY_BASE_URL}/openstack/bin/utils/cfssl/cfssljson"
+)
+
+function download {
+ local url=$1
+ local dst=$2
+ curl --retry 6 --retry-delay 10 -L ${url} -o ${dst}
+ chmod +x ${dst}
+}
+
+for bin in "${!binaries[@]}"; do
+ download ${binaries[${bin}]} ${bin}
+done
diff --git a/trymos/image_build/template.json b/trymos/image_build/template.json
index a6e0c89..3c2ee67 100644
--- a/trymos/image_build/template.json
+++ b/trymos/image_build/template.json
@@ -6,10 +6,20 @@
"images_cache": "{{ env `PACKER_IMAGES_CACHE` }}",
"image_base_url": "{{ env `IMAGE_BASE_URL` }}",
"image_md5_url": "{{ env `IMAGE_MD5_URL` }}",
- "vm_name": "{{ env `VM_NAME` }}"
+ "vm_name": "{{ env `VM_NAME` }}",
+ "binary_base_url": "{{ env `BINARY_BASE_URL` }}"
},
"provisioners": [
{
+ "type": "shell",
+ "environment_vars": [
+ "BINARY_BASE_URL={{user `binary_base_url`}}"
+ ],
+ "scripts": [
+ "scripts/binary.sh"
+ ]
+ },
+ {
"type": "file",
"source": "./certs",
"destination": "/srv/"