diff --git a/03_build_installer.sh b/03_build_installer.sh index f0ffe3de2..346bb1e34 100755 --- a/03_build_installer.sh +++ b/03_build_installer.sh @@ -18,6 +18,8 @@ extract_oc "${OPENSHIFT_RELEASE_IMAGE}" mkdir -p $OCP_DIR +save_release_info ${OPENSHIFT_RELEASE_IMAGE} ${OCP_DIR} + if [ -z "$KNI_INSTALL_FROM_GIT" ]; then # Extract openshift-install from the release image extract_installer "${OPENSHIFT_RELEASE_IMAGE}" $OCP_DIR diff --git a/04_setup_ironic.sh b/04_setup_ironic.sh index e270d1768..07806e23e 100755 --- a/04_setup_ironic.sh +++ b/04_setup_ironic.sh @@ -122,7 +122,7 @@ if [ ! -z "${MIRROR_IMAGES}" ]; then sudo podman push --tls-verify=false --authfile $PULL_SECRET_FILE $OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE $OPENSHIFT_INSTALL_RELEASE_IMAGE_OVERRIDE # If we're mirroring images, let's use the local Ironic image instead - OPENSHIFT_RELEASE_VERSION=$(oc adm release info --registry-config="$PULL_SECRET_FILE" "$OPENSHIFT_RELEASE_IMAGE" -o json | jq -r ".config.config.Labels.\"io.openshift.release\"") + OPENSHIFT_RELEASE_VERSION=$(openshift_release_version) IRONIC_LOCAL_IMAGE=${IRONIC_LOCAL_IMAGE:-"${LOCAL_REGISTRY_DNS_NAME}:${LOCAL_REGISTRY_PORT}/localimages/local-release-image:${OPENSHIFT_RELEASE_VERSION}-ironic"} fi diff --git a/ocp_install_env.sh b/ocp_install_env.sh index ddc59b035..d150d0991 100644 --- a/ocp_install_env.sh +++ b/ocp_install_env.sh @@ -36,6 +36,31 @@ function extract_installer() { extract_command openshift-baremetal-install "$1" "$2" } +function save_release_info() { + local release_image + local outdir + + release_image="$1" + outdir="$2" + + oc adm release info --registry-config "$PULL_SECRET_FILE" "$release_image" -o json > ${outdir}/release_info.json +} + +# Gives e.g 4.7.0-0.nightly-2020-10-27-051128 +function openshift_release_version() { + jq -r ".metadata.version" ${OCP_DIR}/release_info.json +} + +# Gives us e.g 4.7 because although OPENSHIFT_VERSION is set by users, +# but is not set in CI +function openshift_version() { + jq -r ".metadata.version" ${OCP_DIR}/release_info.json | grep -oP "\d\.\d+" +} + +function image_for() { + jq -r ".references.spec.tags[] | select(.name == \"$1\") | .from.name" ${OCP_DIR}/release_info.json +} + function extract_rhcos_json() { local release_image local outdir @@ -43,7 +68,7 @@ function extract_rhcos_json() { release_image="$1" outdir="$2" - baremetal_image=$(oc adm release info --image-for=baremetal-installer --registry-config "$PULL_SECRET_FILE" "$release_image") + baremetal_image=$(image_for baremetal-installer) baremetal_container=$(podman create --authfile "$PULL_SECRET_FILE" "$baremetal_image") # This is OK to fail as rhcos.json isn't available in every release, @@ -70,7 +95,7 @@ function build_installer() { } function baremetal_network_configuration() { - if [[ "$OPENSHIFT_VERSION" == "4.3" ]]; then + if [[ "$(openshift_version $OCP_DIR)" == "4.3" ]]; then return fi @@ -89,6 +114,15 @@ EOF fi } +function dnsvip() { + # dnsVIP was removed from 4.5 + if printf '%s\n4.4\n' "$(openshift_version)" | sort -V -C; then +cat < clouds.yaml else IRONIC_USER=$(oc -n openshift-machine-api get secret/metal3-ironic-password -o template --template '{{.data.username}}' | base64 -d) IRONIC_PASSWORD=$(oc -n openshift-machine-api get secret/metal3-ironic-password -o template --template '{{.data.password}}' | base64 -d) - IRONIC_CREDS="$IRONIC_USER:$IRONIC_PASSWORD" + IRONIC_CREDS="$IRONIC_USER:$IRONIC_PASSWORD" INSPECTOR_USER=$(oc -n openshift-machine-api get secret/metal3-ironic-inspector-password -o template --template '{{.data.username}}' | base64 -d) INSPECTOR_PASSWORD=$(oc -n openshift-machine-api get secret/metal3-ironic-inspector-password -o template --template '{{.data.password}}' | base64 -d) - INSPECTOR_CREDS="$INSPECTOR_USER:$INSPECTOR_PASSWORD" + INSPECTOR_CREDS="$INSPECTOR_USER:$INSPECTOR_PASSWORD" go run metal3-templater.go "http_basic" -ironic-basic-auth="$IRONIC_CREDS" -inspector-basic-auth="$INSPECTOR_CREDS" -template-file=clouds.yaml.template -provisioning-interface="$CLUSTER_PRO_IF" -provisioning-network="$PROVISIONING_NETWORK" -image-url="$MACHINE_OS_IMAGE_URL" -bootstrap-ip="$BOOTSTRAP_PROVISIONING_IP" -cluster-ip="$CLUSTER_PROVISIONING_IP" > clouds.yaml fi