diff --git a/data/data/bootstrap/baremetal/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender b/data/data/bootstrap/baremetal/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender index 5ec300f6bf3..97ff5f1c06e 100755 --- a/data/data/bootstrap/baremetal/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender +++ b/data/data/bootstrap/baremetal/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender @@ -6,13 +6,27 @@ case "$STATUS" in logger -s "NM local-dns-prepender triggered by ${1} ${2}." DNS_IP="127.0.0.1" set +e - logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" - if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then - logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" - exit 0 + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for local DNS" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + mkdir -p /etc/systemd/resolved.conf.d + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$DNS_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi else - logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" - sed -i "/^# Generated by.*$/a nameserver $DNS_IP" /etc/resolv.conf + logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" + if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then + logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" + exit 0 + else + logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" + sed -i "/^# Generated by.*$/a nameserver $DNS_IP" /etc/resolv.conf + fi fi ;; *) diff --git a/data/data/bootstrap/files/usr/local/bin/bootstrap-cluster-gather.sh b/data/data/bootstrap/files/usr/local/bin/bootstrap-cluster-gather.sh index f7d5133a0f5..ccc2cb2da42 100644 --- a/data/data/bootstrap/files/usr/local/bin/bootstrap-cluster-gather.sh +++ b/data/data/bootstrap/files/usr/local/bin/bootstrap-cluster-gather.sh @@ -67,7 +67,7 @@ function cluster_bootstrap_gather() { FILTER=gzip queue resources/openapi.json.gz oc --request-timeout=5s get --raw /openapi/v2 echo "Waiting for logs ..." - wait + while wait -n; do jobs; done if (( $(stat -c%s "${ARTIFACTS_TEMP}/resources/openapi.json.gz") <= 20 )) then diff --git a/data/data/bootstrap/files/usr/local/bin/bootstrap-pivot.sh b/data/data/bootstrap/files/usr/local/bin/bootstrap-pivot.sh new file mode 100644 index 00000000000..51d30d712e1 --- /dev/null +++ b/data/data/bootstrap/files/usr/local/bin/bootstrap-pivot.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +set -euo pipefail +# Update bootstrap node with latest content. Required for OKD as it starts with FCOS image +# and needs to be updated to the machine-os-content used by masters / nodes. + +# shellcheck disable=SC1091 +. /usr/local/bin/bootstrap-service-record.sh + +# Pivot bootstrap to FCOS + OKD machine-os-content +if [ ! -f /opt/openshift/.pivot-done ]; then + record_service_stage_start "pivot-to-release-image" + + # shellcheck disable=SC1091 + . /usr/local/bin/release-image.sh + + # Run pre-pivot.sh script to update bootstrap node + MACHINE_CONFIG_OSCONTENT=$(image_for machine-os-content) + while ! podman pull --quiet "$MACHINE_CONFIG_OSCONTENT" + do + record_service_stage_failure + echo "Pull failed. Retrying $MACHINE_CONFIG_OSCONTENT..." + done + record_service_stage_success + mnt="$(podman image mount "${MACHINE_CONFIG_OSCONTENT}")" + pushd "${mnt}/bootstrap" + # shellcheck disable=SC1091 + . ./pre-pivot.sh + popd + record_service_stage_success +fi diff --git a/data/data/bootstrap/files/usr/local/bin/installer-masters-gather.sh b/data/data/bootstrap/files/usr/local/bin/installer-masters-gather.sh index 5320ad959d4..35eb0154ca6 100755 --- a/data/data/bootstrap/files/usr/local/bin/installer-masters-gather.sh +++ b/data/data/bootstrap/files/usr/local/bin/installer-masters-gather.sh @@ -50,4 +50,4 @@ do done echo "Waiting for logs ..." -wait +while wait -n; do jobs; done diff --git a/data/data/bootstrap/openstack/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender b/data/data/bootstrap/openstack/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender index 5ec300f6bf3..97ff5f1c06e 100755 --- a/data/data/bootstrap/openstack/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender +++ b/data/data/bootstrap/openstack/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender @@ -6,13 +6,27 @@ case "$STATUS" in logger -s "NM local-dns-prepender triggered by ${1} ${2}." DNS_IP="127.0.0.1" set +e - logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" - if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then - logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" - exit 0 + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for local DNS" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + mkdir -p /etc/systemd/resolved.conf.d + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$DNS_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi else - logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" - sed -i "/^# Generated by.*$/a nameserver $DNS_IP" /etc/resolv.conf + logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" + if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then + logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" + exit 0 + else + logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" + sed -i "/^# Generated by.*$/a nameserver $DNS_IP" /etc/resolv.conf + fi fi ;; *) diff --git a/data/data/bootstrap/ovirt/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender b/data/data/bootstrap/ovirt/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender index 5ec300f6bf3..97ff5f1c06e 100755 --- a/data/data/bootstrap/ovirt/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender +++ b/data/data/bootstrap/ovirt/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender @@ -6,13 +6,27 @@ case "$STATUS" in logger -s "NM local-dns-prepender triggered by ${1} ${2}." DNS_IP="127.0.0.1" set +e - logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" - if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then - logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" - exit 0 + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for local DNS" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + mkdir -p /etc/systemd/resolved.conf.d + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$DNS_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi else - logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" - sed -i "/^# Generated by.*$/a nameserver $DNS_IP" /etc/resolv.conf + logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" + if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then + logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" + exit 0 + else + logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" + sed -i "/^# Generated by.*$/a nameserver $DNS_IP" /etc/resolv.conf + fi fi ;; *) diff --git a/data/data/bootstrap/systemd/units/crio-configure.service.template b/data/data/bootstrap/systemd/units/crio-configure.service.template index 9113d6356aa..1ae4af22cf3 100644 --- a/data/data/bootstrap/systemd/units/crio-configure.service.template +++ b/data/data/bootstrap/systemd/units/crio-configure.service.template @@ -2,6 +2,9 @@ Description=Configure CRI-O to use the pause image After=release-image.service Requires=release-image.service +{{if .IsOKD -}} +Requires=release-image-pivot.service +{{end -}} Before=crio.service [Service] diff --git a/data/data/bootstrap/systemd/units/release-image-pivot.service.template b/data/data/bootstrap/systemd/units/release-image-pivot.service.template new file mode 100644 index 00000000000..9d1e377f96f --- /dev/null +++ b/data/data/bootstrap/systemd/units/release-image-pivot.service.template @@ -0,0 +1,11 @@ +{{if .IsOKD -}} +[Unit] +Description=Pivot bootstrap to the OpenShift Release Image +Wants=release-image.service +After=release-image.service + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/bootstrap-pivot.sh +RemainAfterExit=true +{{end -}} diff --git a/data/data/bootstrap/systemd/units/release-image.service.template b/data/data/bootstrap/systemd/units/release-image.service similarity index 100% rename from data/data/bootstrap/systemd/units/release-image.service.template rename to data/data/bootstrap/systemd/units/release-image.service diff --git a/data/data/bootstrap/systemd/units/zincati.service.d/okd-machine-os-disabled.conf b/data/data/bootstrap/systemd/units/zincati.service.d/okd-machine-os-disabled.conf new file mode 100644 index 00000000000..922625e572b --- /dev/null +++ b/data/data/bootstrap/systemd/units/zincati.service.d/okd-machine-os-disabled.conf @@ -0,0 +1,2 @@ +[Unit] +ConditionPathExists=/enoent diff --git a/data/data/bootstrap/vsphere/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender.template b/data/data/bootstrap/vsphere/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender.template index 6373e247c2e..c3c9d930311 100755 --- a/data/data/bootstrap/vsphere/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender.template +++ b/data/data/bootstrap/vsphere/files/etc/NetworkManager/dispatcher.d/30-local-dns-prepender.template @@ -18,13 +18,27 @@ case "$STATUS" in fi EOF set +e - logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" - if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then - logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" - exit 0 + if systemctl -q is-enabled systemd-resolved; then + >&2 echo "NM resolv-prepender: Setting up systemd-resolved for local DNS" + if [[ ! -f /etc/systemd/resolved.conf.d/60-kni.conf ]]; then + >&2 echo "NM resolv-prepender: Creating /etc/systemd/resolved.conf.d/60-kni.conf" + mkdir -p /etc/systemd/resolved.conf.d + echo "[Resolve]" > /etc/systemd/resolved.conf.d/60-kni.conf + echo "DNS=$DNS_IP" >> /etc/systemd/resolved.conf.d/60-kni.conf + if systemctl -q is-active systemd-resolved; then + >&2 echo "NM resolv-prepender: restarting systemd-resolved" + systemctl restart systemd-resolved + fi + fi else - logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" - sed -i "/^# Generated by/a nameserver $DNS_IP" /etc/resolv.conf + logger -s "NM local-dns-prepender: Checking if local DNS IP is the first entry in resolv.conf" + if grep nameserver /etc/resolv.conf | head -n 1 | grep -q "$DNS_IP" ; then + logger -s "NM local-dns-prepender: local DNS IP already is the first entry in resolv.conf" + exit 0 + else + logger -s "NM local-dns-prepender: Looking for '# Generated by NetworkManager' in /etc/resolv.conf to place 'nameserver $DNS_IP'" + sed -i "/^# Generated by.*$/a nameserver $DNS_IP" /etc/resolv.conf + fi fi {{end}} ;; diff --git a/data/data/fcos-amd64.json b/data/data/fcos-amd64.json new file mode 100644 index 00000000000..81a01c91129 --- /dev/null +++ b/data/data/fcos-amd64.json @@ -0,0 +1,145 @@ +{ + "amis": { + "af-south-1": { + "hvm": "ami-0a1a411aaa6d4b527" + }, + "ap-east-1": { + "hvm": "ami-05e431ec2fc9c924a" + }, + "ap-northeast-1": { + "hvm": "ami-05b9fd3d730ef83ef" + }, + "ap-northeast-2": { + "hvm": "ami-0bd42cc4365783d16" + }, + "ap-northeast-3": { + "hvm": "ami-05215c82eaf761a11" + }, + "ap-south-1": { + "hvm": "ami-0cd02ddff2f1a86ab" + }, + "ap-southeast-1": { + "hvm": "ami-0770399b81c733429" + }, + "ap-southeast-2": { + "hvm": "ami-075698bf311039797" + }, + "ca-central-1": { + "hvm": "ami-0e12eb0c73669c145" + }, + "eu-central-1": { + "hvm": "ami-08eeb2c051c7b2746" + }, + "eu-north-1": { + "hvm": "ami-0aa4087237e3caa37" + }, + "eu-south-1": { + "hvm": "ami-0ddaea57ee7f8c041" + }, + "eu-west-1": { + "hvm": "ami-04294ca44dde3b013" + }, + "eu-west-2": { + "hvm": "ami-0e30f22ddf8ff928d" + }, + "eu-west-3": { + "hvm": "ami-071daa3ab6169a1fa" + }, + "me-south-1": { + "hvm": "ami-0539270d61a06080e" + }, + "sa-east-1": { + "hvm": "ami-0f3bd27a50373ee82" + }, + "us-east-1": { + "hvm": "ami-01f39e95b77950f08" + }, + "us-east-2": { + "hvm": "ami-0729394053ccbb99c" + }, + "us-west-1": { + "hvm": "ami-021238084bf8c95ff" + }, + "us-west-2": { + "hvm": "ami-0181746be6e4558fe" + } + }, + "azure": { + "image": "fedora-coreos-33.20210217.3.0-azure.x86_64.vhd", + "url": "https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/33.20210217.3.0/x86_64/fedora-coreos-33.20210217.3.0-azure.x86_64.vhd.xz" + }, + "baseURI": "https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/33.20210217.3.0/x86_64/", + "buildid": "33.20210217.3.0", + "gcp": { + "family": "fedora-coreos-stable", + "image": "fedora-coreos-33-20210217-3-0-gcp-x86-64", + "project": "fedora-coreos-cloud", + "url": "https://storage.googleapis.com/fedora-coreos-cloud-image-uploads/image-import/fedora-coreos-33-20210217-3-0-gcp-x86-64.tar.gz" + }, + "images": { + "aws": { + "path": "fedora-coreos-33.20210217.3.0-aws.x86_64.vmdk.xz", + "sha256": "b8e8b2dde46c0040df51671c18663469c423fb949f64afc659b0467a9fe940ca", + "size": 808156944, + "uncompressed-sha256": "fd39d70cb0739053bc306ef2b8d09c06c051797b8c7e176466c0de2a8e3f609e", + "uncompressed-size": 852023808 + }, + "azure": { + "path": "fedora-coreos-33.20210217.3.0-azure.x86_64.vhd.xz", + "sha256": "9e5522a7f36c4e2562771c84ca47b85a67cfb1054598cdd991838d972a7d9657", + "size": 566575332, + "uncompressed-sha256": "d0ea0f0f8d33388b71234e85a45c059a86acbbaa30bc1fed8e78d0a0084afdea", + "uncompressed-size": 8589935104 + }, + "gcp": { + "path": "fedora-coreos-33.20210217.3.0-gcp.x86_64.tar.gz", + "sha256": "dcb4032d6a71cfa2da475d57218de2086847f07890f24eea308d174dd3f9f792", + "size": 833626256 + }, + "initramfs": { + "path": "fedora-coreos-33.20210217.3.0-live-initramfs.x86_64.img", + "sha256": "8a180dc5276738847869ac3790edf36409b41a548c42a74ba0247d28a1be2f4a" + }, + "iso": { + "path": "fedora-coreos-33.20210217.3.0-live.x86_64.iso", + "sha256": "bf91335e07a97593b66e2ae9fd43924c3aa2353a5443e37b6efd77d3df883254" + }, + "kernel": { + "path": "fedora-coreos-33.20210217.3.0-live-kernel-x86_64", + "sha256": "ef7c2c6d17c5434957586dc50cb24a11a70c91069ea99fbf7ee1f596817d4efd" + }, + "metal": { + "path": "fedora-coreos-33.20210217.3.0-metal.x86_64.raw.xz", + "sha256": "fb3d401633f970c6a2218519ed4846597fb9673f66186b63da426442de880fc4", + "size": 566731348, + "uncompressed-sha256": "77a2272e09f1b8feec4a99f52740f016fb3b8a219fd812618747101372383e28", + "uncompressed-size": 3064987648 + }, + "openstack": { + "path": "fedora-coreos-33.20210217.3.0-openstack.x86_64.qcow2.xz", + "sha256": "0d6b6f1d0ffd7d5d5cc39fdaa2aa8120815ee6c81a73d8109002d2a78e50906b", + "size": 565259844, + "uncompressed-sha256": "ae088d752a52859ad38c53c29090efd5930453229ef6d1204645916aab856fb1", + "uncompressed-size": 1906311168 + }, + "ostree": { + "path": "fedora-coreos-33.20210217.3.0-ostree.x86_64.tar", + "sha256": "606a12da93e23f911b65bed2a843f82a5a564e7151ac0a5c013a43935e61e473", + "size": 760145920 + }, + "qemu": { + "path": "fedora-coreos-33.20210217.3.0-qemu.x86_64.qcow2.xz", + "sha256": "2e70980a0768a4f670546093df79f325fe5a1f3fa405367dd85392fb9b5de8c7", + "size": 569397416, + "uncompressed-sha256": "4d1933eb6aaf94a4bf1772d6191feb5bf8c42e5666a0dfcc4e8f1237734de6b0", + "uncompressed-size": 1921843200 + }, + "vmware": { + "path": "fedora-coreos-33.20210217.3.0-vmware.x86_64.ova", + "sha256": "3856ff9b1faa3210c0d8bcb10b4d481974fbdcd92204f1632bda66da313fa18c", + "size": 852039680 + } + }, + "ostree-commit": "4e69a32ac9dc553b1bf0c98b07c5f82ab52cd0cef2c366d5f6766ec4aa19e70f", + "ostree-version": "33.20210217.3.0" +} diff --git a/data/data/fcos-stream.json b/data/data/fcos-stream.json new file mode 100644 index 00000000000..6a14bef0ae6 --- /dev/null +++ b/data/data/fcos-stream.json @@ -0,0 +1,294 @@ +{ + "stream": "testing", + "metadata": { + "last-modified": "2021-06-29T10:21:17Z" + }, + "architectures": { + "x86_64": { + "artifacts": { + "aliyun": { + "release": "34.20210626.2.0", + "formats": { + "qcow2.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-aliyun.x86_64.qcow2.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-aliyun.x86_64.qcow2.xz.sig", + "sha256": "8a5ac227de31c2b7cdccc7b546e3e165a915e7d5c5535ac7022ad8148ae7bc5b", + "uncompressed-sha256": "12b6fc9de963fd9318e50532dcae3efa706bfb1b2a02e532f230b796cd6f2570" + } + } + } + }, + "aws": { + "release": "34.20210626.2.0", + "formats": { + "vmdk.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-aws.x86_64.vmdk.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-aws.x86_64.vmdk.xz.sig", + "sha256": "39ed71217a276e6bcbdeccd3cbbfd67a34d09101bfb9e7a2b6cc048c03fb23d7", + "uncompressed-sha256": "4fbfde923d7b0e243f20ab81124bee20ef4e21b9842421b18926c4db1d8857a3" + } + } + } + }, + "azure": { + "release": "34.20210626.2.0", + "formats": { + "vhd.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-azure.x86_64.vhd.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-azure.x86_64.vhd.xz.sig", + "sha256": "eb9ef79c36d99d22656c3308992524304fe4959807af374c962fbd162f19f046", + "uncompressed-sha256": "1669e2f28260762278571569e5465fad07dff7d8391e19dbd1364ef0a90d3719" + } + } + } + }, + "digitalocean": { + "release": "34.20210626.2.0", + "formats": { + "qcow2.gz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-digitalocean.x86_64.qcow2.gz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-digitalocean.x86_64.qcow2.gz.sig", + "sha256": "00ca38e6fe69738a22ad58dce6b023d043f51db8198a056cc87c553d04f5fbb5", + "uncompressed-sha256": "fdad83ec1519c9ee6ec6056c6962f8e7652c5789d6b18463dedd32aaaae302b4" + } + } + } + }, + "exoscale": { + "release": "34.20210626.2.0", + "formats": { + "qcow2.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-exoscale.x86_64.qcow2.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-exoscale.x86_64.qcow2.xz.sig", + "sha256": "09c084cc040af5fd1d1012f5ed52f67da5b373d19ada3b5d8ccef7c649e76cde", + "uncompressed-sha256": "7c4ac26830489429e35192ba11379b94873b652424fe9505241fb47074d29521" + } + } + } + }, + "gcp": { + "release": "34.20210626.2.0", + "formats": { + "tar.gz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-gcp.x86_64.tar.gz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-gcp.x86_64.tar.gz.sig", + "sha256": "1c73752a3686f580fa86dd1a1f1a4bc12c616e431f8d01d2ccc2fe9c7d048935", + "uncompressed-sha256": "c32629174d753571351d632af3c4ed7bd48f536733cb8f4902f583753338d3e3" + } + } + } + }, + "ibmcloud": { + "release": "34.20210626.2.0", + "formats": { + "qcow2.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-ibmcloud.x86_64.qcow2.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-ibmcloud.x86_64.qcow2.xz.sig", + "sha256": "da7abcc7666187851a62636e98d56d519417ce8ba56e6dd14b6e17c3200dd119", + "uncompressed-sha256": "3e3f59e6b8ab3493e1ed7f2dfb046fe5a5bc91a16f40df5fd55a7021903e1be8" + } + } + } + }, + "metal": { + "release": "34.20210626.2.0", + "formats": { + "4k.raw.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-metal4k.x86_64.raw.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-metal4k.x86_64.raw.xz.sig", + "sha256": "de374a7234ff93117cd44c2c580cd621f74f08ff13af25cfe0e45ceb774fb35e", + "uncompressed-sha256": "a2d8d87fc46e0ab0ba778684afb041fa795847d59c3ab56e58de58d5597df871" + } + }, + "iso": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live.x86_64.iso", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live.x86_64.iso.sig", + "sha256": "598587080f2a96770d660e3d42dbdb1059aabca9d8eaaeb5222b68b92e26d225" + } + }, + "pxe": { + "kernel": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live-kernel-x86_64", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live-kernel-x86_64.sig", + "sha256": "e4b5cac76b9f5991a488f2f8d178d82f70cce3457f62986c0136ba19a0463aa5" + }, + "initramfs": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live-initramfs.x86_64.img", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live-initramfs.x86_64.img.sig", + "sha256": "e17f6082861fefced56d908af54a3a43832823fa9447dfac5327e9ff250dbc83" + }, + "rootfs": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live-rootfs.x86_64.img", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-live-rootfs.x86_64.img.sig", + "sha256": "043472e6e1b8bbb7f3907b5df5ae890dedb765424b763dff6e8bf8657b9739c2" + } + }, + "raw.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-metal.x86_64.raw.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-metal.x86_64.raw.xz.sig", + "sha256": "156cfd20264af88b1efe41ea41f8eb929a0fc98704293ec7f5a1f1524658ade6", + "uncompressed-sha256": "0502afe6689566ec5661cd39435f82e864a1d057eacb50fa4889925c2b552571" + } + } + } + }, + "openstack": { + "release": "34.20210626.2.0", + "formats": { + "qcow2.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-openstack.x86_64.qcow2.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-openstack.x86_64.qcow2.xz.sig", + "sha256": "a83fc15db3e2274fc3e9f3909c08d2784e1e3a9352276fa30954f62a49e2ded7", + "uncompressed-sha256": "24cc37d752028c8f78dd4aed66e13eb294e9a07c0e1c506ccabc33459faccff1" + } + } + } + }, + "qemu": { + "release": "34.20210626.2.0", + "formats": { + "qcow2.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-qemu.x86_64.qcow2.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-qemu.x86_64.qcow2.xz.sig", + "sha256": "6f1e5e38eb9dac07466433665cda204bfee2cad144acba0aba9af75e76b27919", + "uncompressed-sha256": "490ab7341a4a7fffda5fbf56bf022ddc71161af492d0eb9cbce2239318d1d064" + } + } + } + }, + "vmware": { + "release": "34.20210626.2.0", + "formats": { + "ova": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-vmware.x86_64.ova", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-vmware.x86_64.ova.sig", + "sha256": "7a178acb5a43b26c31631cbbf928f471e639641d179c779197e7d763b9110414" + } + } + } + }, + "vultr": { + "release": "34.20210626.2.0", + "formats": { + "raw.xz": { + "disk": { + "location": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-vultr.x86_64.raw.xz", + "signature": "https://builds.coreos.fedoraproject.org/prod/streams/testing/builds/34.20210626.2.0/x86_64/fedora-coreos-34.20210626.2.0-vultr.x86_64.raw.xz.sig", + "sha256": "4e42cc1fb80329646969da90fca7153ffae26952b663012e1b90b351d5715693", + "uncompressed-sha256": "3c601db2b2a9a1231d91b53bbda4fa765661de8a81a2abc6fa1f69180c42202b" + } + } + } + } + }, + "images": { + "aws": { + "regions": { + "af-south-1": { + "release": "34.20210626.2.0", + "image": "ami-06ce6cd7ae14d4e36" + }, + "ap-east-1": { + "release": "34.20210626.2.0", + "image": "ami-0c523b93e7931c390" + }, + "ap-northeast-1": { + "release": "34.20210626.2.0", + "image": "ami-0b1bc3f2c1bc08b69" + }, + "ap-northeast-2": { + "release": "34.20210626.2.0", + "image": "ami-03345d33cb26bc661" + }, + "ap-northeast-3": { + "release": "34.20210626.2.0", + "image": "ami-01e001d8864b4f29d" + }, + "ap-south-1": { + "release": "34.20210626.2.0", + "image": "ami-0fce67cf8e9812a76" + }, + "ap-southeast-1": { + "release": "34.20210626.2.0", + "image": "ami-0674b758a90e82f9d" + }, + "ap-southeast-2": { + "release": "34.20210626.2.0", + "image": "ami-02234d79a973a5f53" + }, + "ca-central-1": { + "release": "34.20210626.2.0", + "image": "ami-08c1b1b41febd498c" + }, + "eu-central-1": { + "release": "34.20210626.2.0", + "image": "ami-05d1ebfc450ec9f1e" + }, + "eu-north-1": { + "release": "34.20210626.2.0", + "image": "ami-0c304efcf489e8a4f" + }, + "eu-south-1": { + "release": "34.20210626.2.0", + "image": "ami-049e141bcf79024c5" + }, + "eu-west-1": { + "release": "34.20210626.2.0", + "image": "ami-07a6835aaad9cc5ca" + }, + "eu-west-2": { + "release": "34.20210626.2.0", + "image": "ami-06c4d4769614a43e0" + }, + "eu-west-3": { + "release": "34.20210626.2.0", + "image": "ami-06e938ee9a84c2d3e" + }, + "me-south-1": { + "release": "34.20210626.2.0", + "image": "ami-00e6941c14327860a" + }, + "sa-east-1": { + "release": "34.20210626.2.0", + "image": "ami-0fed26dc669439cdd" + }, + "us-east-1": { + "release": "34.20210626.2.0", + "image": "ami-0dcce6fefedc4780c" + }, + "us-east-2": { + "release": "34.20210626.2.0", + "image": "ami-0227bf3374a60ff8b" + }, + "us-west-1": { + "release": "34.20210626.2.0", + "image": "ami-081afa57703a058b9" + }, + "us-west-2": { + "release": "34.20210626.2.0", + "image": "ami-07597603ac267ab05" + } + } + }, + "gcp": { + "project": "fedora-coreos-cloud", + "family": "fedora-coreos-testing", + "name": "fedora-coreos-34-20210626-2-0-gcp-x86-64" + } + } + } + } +} diff --git a/data/data/manifests/bootkube/cvo-overrides.yaml.template b/data/data/manifests/bootkube/cvo-overrides.yaml.template index ecd0d36ce98..78f58620c52 100644 --- a/data/data/manifests/bootkube/cvo-overrides.yaml.template +++ b/data/data/manifests/bootkube/cvo-overrides.yaml.template @@ -4,5 +4,10 @@ metadata: namespace: openshift-cluster-version name: version spec: +{{- if .IsOKD }} + upstream: https://amd64.origin.releases.ci.openshift.org/graph + channel: stable-4 +{{- else }} channel: stable-4.8 +{{- end }} clusterID: {{.CVOClusterID}} diff --git a/images/baremetal/Dockerfile.ci b/images/baremetal/Dockerfile.ci index aa8c1185f5f..f51068447e3 100644 --- a/images/baremetal/Dockerfile.ci +++ b/images/baremetal/Dockerfile.ci @@ -2,11 +2,12 @@ # It builds an image containing openshift-install. FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.16-openshift-4.9 AS builder +ARG TAGS="libvirt baremetal" RUN yum install -y libvirt-devel-6.0.0 && \ yum clean all && rm -rf /var/cache/yum/* WORKDIR /go/src/github.com/openshift/installer COPY . . -RUN TAGS="libvirt baremetal" DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh +RUN DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh FROM registry.ci.openshift.org/ocp/4.9:base diff --git a/images/installer-artifacts/Dockerfile.rhel b/images/installer-artifacts/Dockerfile.rhel index 3f481a78aaf..bc3f486b9fa 100644 --- a/images/installer-artifacts/Dockerfile.rhel +++ b/images/installer-artifacts/Dockerfile.rhel @@ -2,6 +2,7 @@ # the installer layered on top of the cluster-native Linux installer image. FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.16-openshift-4.9 AS macbuilder +ARG TAGS="" WORKDIR /go/src/github.com/openshift/installer COPY . . RUN go generate ./data && \ diff --git a/images/installer/Dockerfile.ci b/images/installer/Dockerfile.ci index 855efb9352c..c755f2efde8 100644 --- a/images/installer/Dockerfile.ci +++ b/images/installer/Dockerfile.ci @@ -2,6 +2,7 @@ # It builds an image containing only the openshift-install. FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.16-openshift-4.9 AS builder +ARG TAGS="" WORKDIR /go/src/github.com/openshift/installer COPY . . RUN DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh diff --git a/images/installer/Dockerfile.ci.rhel7 b/images/installer/Dockerfile.ci.rhel7 index 3b32f49bbeb..8701b1cd3bb 100644 --- a/images/installer/Dockerfile.ci.rhel7 +++ b/images/installer/Dockerfile.ci.rhel7 @@ -2,6 +2,7 @@ # It builds an image containing only the openshift-install. FROM registry.ci.openshift.org/ocp/builder:rhel-7-golang-1.15-openshift-4.8 AS builder +ARG TAGS="" WORKDIR /go/src/github.com/openshift/installer COPY . . RUN DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh diff --git a/images/installer/Dockerfile.upi.ci b/images/installer/Dockerfile.upi.ci index 5d28d7ced29..055fd3a69a2 100644 --- a/images/installer/Dockerfile.upi.ci +++ b/images/installer/Dockerfile.upi.ci @@ -4,6 +4,7 @@ FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.15-openshift-4.8 AS builder +ARG TAGS="" WORKDIR /go/src/github.com/openshift/installer COPY . . RUN DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh diff --git a/images/installer/Dockerfile.upi.ci.rhel8 b/images/installer/Dockerfile.upi.ci.rhel8 index fb204cdb6ed..83cd79061f7 100644 --- a/images/installer/Dockerfile.upi.ci.rhel8 +++ b/images/installer/Dockerfile.upi.ci.rhel8 @@ -4,6 +4,7 @@ # It also contains the `upi` directory that contains various terraform and cloud formation templates that are used to create infrastructure resources. FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.15-openshift-4.8 AS builder +ARG TAGS="" WORKDIR /go/src/github.com/openshift/installer COPY . . RUN DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh diff --git a/images/libvirt/Dockerfile.ci b/images/libvirt/Dockerfile.ci index 0ea971eb28a..c18c074f099 100644 --- a/images/libvirt/Dockerfile.ci +++ b/images/libvirt/Dockerfile.ci @@ -2,11 +2,12 @@ # It builds an image containing openshift-install and nss-wrapper for remote deployments, as well as the google cloud-sdk for nested GCE environments. FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.15-openshift-4.8 AS builder +ARG TAGS="libvirt" RUN yum install -y libvirt-devel && \ yum clean all && rm -rf /var/cache/yum/* WORKDIR /go/src/github.com/openshift/installer COPY . . -RUN TAGS="libvirt" DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh +RUN DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh FROM centos:7 COPY --from=builder /go/src/github.com/openshift/installer/bin/openshift-install /bin/openshift-install diff --git a/images/openstack/Dockerfile.ci b/images/openstack/Dockerfile.ci index bfa90895182..af7865188d2 100644 --- a/images/openstack/Dockerfile.ci +++ b/images/openstack/Dockerfile.ci @@ -1,6 +1,7 @@ # This Dockerfile is used by CI to test using OpenShift Installer against an OpenStack cloud. # It builds an image containing the openshift-install command as well as the openstack cli. FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.15-openshift-4.8 AS builder +ARG TAGS="" WORKDIR /go/src/github.com/openshift/installer COPY . . RUN DEFAULT_ARCH="$(go env GOHOSTARCH)" hack/build.sh diff --git a/pkg/asset/ignition/bootstrap/common.go b/pkg/asset/ignition/bootstrap/common.go index f46fb639176..f9ee0a26a5d 100644 --- a/pkg/asset/ignition/bootstrap/common.go +++ b/pkg/asset/ignition/bootstrap/common.go @@ -77,6 +77,7 @@ type bootstrapTemplateData struct { PlatformData platformTemplateData BootstrapInPlace *types.BootstrapInPlace UseIPv6ForNodeIP bool + IsOKD bool } // platformTemplateData is the data to use to replace values in bootstrap @@ -295,6 +296,7 @@ func (a *Common) getTemplateData(dependencies asset.Parents, bootstrapInPlace bo ClusterProfile: clusterProfile, BootstrapInPlace: bootstrapInPlaceConfig, UseIPv6ForNodeIP: APIIntVIPonIPv6, + IsOKD: installConfig.Config.IsOKD(), } } diff --git a/pkg/asset/manifests/operators.go b/pkg/asset/manifests/operators.go index cc6b6c28b9f..66fa9682753 100644 --- a/pkg/asset/manifests/operators.go +++ b/pkg/asset/manifests/operators.go @@ -143,6 +143,7 @@ func (m *Manifests) generateBootKubeManifests(dependencies asset.Parents) []*ass McsTLSKey: base64.StdEncoding.EncodeToString(mcsCertKey.Key()), PullSecretBase64: base64.StdEncoding.EncodeToString([]byte(installConfig.Config.PullSecret)), RootCaCert: string(rootCA.Cert()), + IsOKD: installConfig.Config.IsOKD(), } files := []*asset.File{} diff --git a/pkg/asset/manifests/template.go b/pkg/asset/manifests/template.go index 8102132c222..3acee01ee4e 100644 --- a/pkg/asset/manifests/template.go +++ b/pkg/asset/manifests/template.go @@ -79,6 +79,7 @@ type bootkubeTemplateData struct { PullSecretBase64 string RootCaCert string WorkerIgnConfig string + IsOKD bool } type baremetalTemplateData struct { diff --git a/pkg/rhcos/builds.go b/pkg/rhcos/builds.go index 089a340c363..5dcd1c5eb88 100644 --- a/pkg/rhcos/builds.go +++ b/pkg/rhcos/builds.go @@ -19,7 +19,7 @@ import ( // FetchRawCoreOSStream returns the raw stream metadata for the // bootimages embedded in the installer. func FetchRawCoreOSStream(ctx context.Context) ([]byte, error) { - file, err := data.Assets.Open("rhcos-stream.json") + file, err := data.Assets.Open(getStreamFileName()) if err != nil { return nil, errors.Wrapf(err, "failed to read embedded CoreOS stream metadata") } diff --git a/pkg/rhcos/stream.go b/pkg/rhcos/stream.go new file mode 100644 index 00000000000..59027f2faf8 --- /dev/null +++ b/pkg/rhcos/stream.go @@ -0,0 +1,7 @@ +// +build !okd + +package rhcos + +func getStreamFileName() string { + return "rhcos-stream.json" +} diff --git a/pkg/rhcos/stream_okd.go b/pkg/rhcos/stream_okd.go new file mode 100644 index 00000000000..690c57620b9 --- /dev/null +++ b/pkg/rhcos/stream_okd.go @@ -0,0 +1,7 @@ +// +build okd + +package rhcos + +func getStreamFileName() string { + return "fcos-stream.json" +} diff --git a/pkg/types/defaults/installconfig.go b/pkg/types/defaults/installconfig.go index 7afb638b82f..268509e5f78 100644 --- a/pkg/types/defaults/installconfig.go +++ b/pkg/types/defaults/installconfig.go @@ -23,6 +23,7 @@ var ( defaultClusterNetwork = ipnet.MustParseCIDR("10.128.0.0/14") defaultHostPrefix = 23 defaultNetworkType = string(operv1.NetworkTypeOpenShiftSDN) + defaultOKDNetworkType = string(operv1.NetworkTypeOVNKubernetes) ) // SetInstallConfigDefaults sets the defaults for the install config. @@ -41,7 +42,11 @@ func SetInstallConfigDefaults(c *types.InstallConfig) { } } if c.Networking.NetworkType == "" { - c.Networking.NetworkType = defaultNetworkType + if c.IsOKD() { + c.Networking.NetworkType = defaultOKDNetworkType + } else { + c.Networking.NetworkType = defaultNetworkType + } } if len(c.Networking.ServiceNetwork) == 0 { c.Networking.ServiceNetwork = []ipnet.IPNet{*defaultServiceNetwork} diff --git a/pkg/types/installconfig.go b/pkg/types/installconfig.go index ba1ce5c8119..62fc548761c 100644 --- a/pkg/types/installconfig.go +++ b/pkg/types/installconfig.go @@ -48,6 +48,9 @@ var ( kubevirt.Name, none.Name, } + + // OKD is a setting to enable community-only modifications + OKD = false ) // PublishingStrategy is a strategy for how various endpoints for the cluster are exposed. @@ -155,6 +158,11 @@ func (c *InstallConfig) ClusterDomain() string { return fmt.Sprintf("%s.%s", c.ObjectMeta.Name, strings.TrimSuffix(c.BaseDomain, ".")) } +// IsOKD returns true if community-only modifications are enabled +func (c *InstallConfig) IsOKD() bool { + return OKD +} + // Platform is the configuration for the specific platform upon which to perform // the installation. Only one of the platform configuration should be set. type Platform struct { diff --git a/pkg/types/installconfig_okd.go b/pkg/types/installconfig_okd.go new file mode 100644 index 00000000000..b2113c91695 --- /dev/null +++ b/pkg/types/installconfig_okd.go @@ -0,0 +1,7 @@ +// +build okd + +package types + +func init() { + OKD = true +}