diff --git a/manifests/function/baremetal-operator/ironic.yaml b/manifests/function/baremetal-operator/ironic.yaml index cef93433f..ebdeb5f91 100644 --- a/manifests/function/baremetal-operator/ironic.yaml +++ b/manifests/function/baremetal-operator/ironic.yaml @@ -59,6 +59,16 @@ spec: - name: ironic-entrypoints mountPath: /bin/init-images subPath: init-images + - name: qcow-bundle + command: + - sh + - -c + - "cp /qcows/*.qcow2 /qcows/*.qcow2.md5sum /shared/html/images/" + image: "quay.io/airshipit/qcow-bundle:latest-ubuntu_focal" + imagePullPolicy: Always + volumeMounts: + - mountPath: "/shared" + name: ironic-storage containers: - name: dnsmasq image: "quay.io/metal3-io/ironic:latest" diff --git a/manifests/function/k8scontrol/controlplane.yaml b/manifests/function/k8scontrol/controlplane.yaml index c5fd4d1ac..71d4d264d 100644 --- a/manifests/function/k8scontrol/controlplane.yaml +++ b/manifests/function/k8scontrol/controlplane.yaml @@ -22,34 +22,9 @@ spec: Environment="NO_PROXY=REPLACEMENT_NO_PROXY" # TODO: add download sources to the versions catalogue preKubeadmCommands: - - echo 'root:r00tme' | chpasswd - - echo 'ubuntu:r00tme' | chpasswd - - | - cat <<EOF | tee /etc/sysctl.d/k8s.conf - net.bridge.bridge-nf-call-ip6tables = 1 - net.bridge.bridge-nf-call-iptables = 1 - EOF - - sysctl --system - - swapoff -a - - export HTTP_PROXY=REPLACEMENT_HTTP_PROXY - - export HTTPS_PROXY=REPLACEMENT_HTTPS_PROXY - - export http_proxy=${HTTP_PROXY} - - export https_proxy=${HTTPS_PROXY} - - export NO_PROXY=REPLACEMENT_NO_PROXY - - export no_proxy=${NO_PROXY} - - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - - curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - - - echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list - # Replace xenial with focal or $(lsb_release -cs) once available - - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list - - apt update - - apt install -y - docker-ce="$(apt-cache policy docker-ce | grep 19.03.12 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2)" - docker-ce-cli="$(apt-cache policy docker-ce-cli | grep 19.03.12 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2)" - containerd.io - - apt install -y kubelet=1.18.6-00 kubeadm=1.18.6-00 kubectl=1.18.6-00 - - apt-mark hold docker-ce docker-ce-cli containerd.io kubelet kubeadm kubectl - - unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY no_proxy NO_PROXY + # Restart docker to apply any proxy settings + - export HOME=/root + - systemctl restart docker initConfiguration: nodeRegistration: name: '{{ ds.meta_data.local_hostname }}' diff --git a/manifests/site/test-site/target/catalogues/hosts.yaml b/manifests/site/test-site/target/catalogues/hosts.yaml index dcbea59c4..b172134df 100644 --- a/manifests/site/test-site/target/catalogues/hosts.yaml +++ b/manifests/site/test-site/target/catalogues/hosts.yaml @@ -10,7 +10,7 @@ metadata: hosts: m3: node01: - bootMode: UEFI + bootMode: legacy macAddress: 52:54:00:b6:ed:31 bmcAddress: redfish+http://10.23.25.1:8000/redfish/v1/Systems/air-target-1 bmcUsername: root @@ -24,7 +24,7 @@ hosts: pxe: 52:54:00:b6:ed:31 hardwareProfile: default # defined in the hostgenerator-m3 function node02: - bootMode: UEFI + bootMode: legacy macAddress: 52:54:00:b6:ed:02 bmcAddress: redfish+https://10.23.25.1:8443/redfish/v1/Systems/air-ephemeral bmcUsername: username @@ -38,7 +38,7 @@ hosts: pxe: 52:54:00:b6:ed:02 hardwareProfile: example # defined in the hardwareprofile-example function node03: - bootMode: UEFI + bootMode: legacy macAddress: 52:54:00:b6:ed:23 bmcAddress: redfish+http://10.23.25.1:8000/redfish/v1/Systems/air-worker-1 bmcUsername: username diff --git a/manifests/site/test-site/target/catalogues/versions-airshipctl.yaml b/manifests/site/test-site/target/catalogues/versions-airshipctl.yaml index 5ce5f8165..cc115ff59 100644 --- a/manifests/site/test-site/target/catalogues/versions-airshipctl.yaml +++ b/manifests/site/test-site/target/catalogues/versions-airshipctl.yaml @@ -7,5 +7,5 @@ files: k8scontrol: # Host the image in a locally served location for CI cluster_controlplane_image: - url: http://10.23.24.1:8099/target-image.qcow2 - checksum: http://10.23.24.1:8099/target-image.qcow2.md5sum + url: http://10.23.24.101:80/images/control-plane.qcow2 + checksum: http://10.23.24.101:80/images/control-plane.qcow2.md5sum diff --git a/manifests/site/test-site/target/workers/provision/kubeadmconfigtemplate.yaml b/manifests/site/test-site/target/workers/provision/kubeadmconfigtemplate.yaml index 20b070236..1078b88c1 100644 --- a/manifests/site/test-site/target/workers/provision/kubeadmconfigtemplate.yaml +++ b/manifests/site/test-site/target/workers/provision/kubeadmconfigtemplate.yaml @@ -12,50 +12,17 @@ spec: node-labels: 'metal3.io/uuid={{ ds.meta_data.uuid }},node-type=worker' provider-id: 'metal3://{{ ds.meta_data.uuid }}' feature-gates: "IPv6DualStack=true" - ntp: - enabled: true - servers: - - 135.188.34.124 - - 135.38.244.16 - - 135.188.34.84 + files: + - path: "/etc/systemd/system/docker.service.d/http-proxy.conf" + content: | + [Service] + Environment="HTTP_PROXY=REPLACEMENT_HTTP_PROXY" + Environment="HTTPS_PROXY=REPLACEMENT_HTTPS_PROXY" + Environment="NO_PROXY=REPLACEMENT_NO_PROXY" preKubeadmCommands: - - echo 'root:r00tme' | chpasswd - - echo 'ubuntu:r00tme' | chpasswd - - | - cat <<EOF | tee /etc/sysctl.d/k8s.conf - net.bridge.bridge-nf-call-ip6tables = 1 - net.bridge.bridge-nf-call-iptables = 1 - EOF - - sysctl --system - - | - mkdir -p /etc/systemd/system/docker.service.d/ - cat <<EOF | tee /etc/systemd/system/docker.service.d/http-proxy.conf - [Service] - Environment="HTTP_PROXY=REPLACEMENT_HTTP_PROXY" - Environment="HTTPS_PROXY=REPLACEMENT_HTTPS_PROXY" - Environment="NO_PROXY=REPLACEMENT_NO_PROXY" - EOF - - export HTTP_PROXY=REPLACEMENT_HTTP_PROXY - - export HTTPS_PROXY=REPLACEMENT_HTTPS_PROXY - - export http_proxy=${HTTP_PROXY} - - export https_proxy=${HTTPS_PROXY} - - export NO_PROXY=REPLACEMENT_NO_PROXY - - export no_proxy=${NO_PROXY} - - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - - curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list - - apt-get update - - apt-get install -y - docker-ce="$(apt policy docker-ce | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )" - docker-ce-cli="$(apt policy docker-ce-cli | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )" - containerd.io - - swapoff -a - - apt-get install -y kubelet=1.18.6-00 kubeadm=1.18.6-00 - - apt-mark hold kubelet kubeadm - - systemctl mask ntp - - systemctl enable --now systemd-timesyncd - - unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY no_proxy NO_PROXY + # Restart docker to apply any proxy settings + - export HOME=/root + - systemctl restart docker users: - name: deployer sshAuthorizedKeys: diff --git a/manifests/site/test-site/target/workers/provision/metal3machinetemplate.yaml b/manifests/site/test-site/target/workers/provision/metal3machinetemplate.yaml index 68599b383..f4405f62a 100644 --- a/manifests/site/test-site/target/workers/provision/metal3machinetemplate.yaml +++ b/manifests/site/test-site/target/workers/provision/metal3machinetemplate.yaml @@ -6,5 +6,5 @@ spec: template: spec: image: - url: http://10.23.24.1:8099/target-image.qcow2 - checksum: http://10.23.24.1:8099/target-image.qcow2.md5sum + url: http://10.23.24.102:80/images/data-plane.qcow2 + checksum: http://10.23.24.102:80/images/data-plane.qcow2.md5sum diff --git a/manifests/site/test-site/target/workers/replacements/workers-env-vars.yaml b/manifests/site/test-site/target/workers/replacements/workers-env-vars.yaml index 744a9093e..79e1517a9 100644 --- a/manifests/site/test-site/target/workers/replacements/workers-env-vars.yaml +++ b/manifests/site/test-site/target/workers/replacements/workers-env-vars.yaml @@ -17,7 +17,9 @@ replacements: objref: kind: KubeadmConfigTemplate name: worker-1 - fieldrefs: ["spec.template.spec.preKubeadmCommands%REPLACEMENT_HTTP_PROXY%"] + fieldrefs: + - "spec.template.spec.preKubeadmCommands%REPLACEMENT_HTTP_PROXY%" + - "spec.template.spec.files[path=/etc/systemd/system/docker.service.d/http-proxy.conf].content%REPLACEMENT_HTTP_PROXY%" - source: objref: name: env-vars-catalogue @@ -26,7 +28,9 @@ replacements: objref: kind: KubeadmConfigTemplate name: worker-1 - fieldrefs: ["spec.template.spec.preKubeadmCommands%REPLACEMENT_HTTPS_PROXY%"] + fieldrefs: + - "spec.template.spec.preKubeadmCommands%REPLACEMENT_HTTPS_PROXY%" + - "spec.template.spec.files[path=/etc/systemd/system/docker.service.d/http-proxy.conf].content%REPLACEMENT_HTTPS_PROXY%" - source: objref: name: env-vars-catalogue @@ -35,4 +39,6 @@ replacements: objref: kind: KubeadmConfigTemplate name: worker-1 - fieldrefs: ["spec.template.spec.preKubeadmCommands%REPLACEMENT_NO_PROXY%"] + fieldrefs: + - "spec.template.spec.preKubeadmCommands%REPLACEMENT_NO_PROXY%" + - "spec.template.spec.files[path=/etc/systemd/system/docker.service.d/http-proxy.conf].content%REPLACEMENT_NO_PROXY%" diff --git a/playbooks/airship-airshipctl-build-gate.yaml b/playbooks/airship-airshipctl-build-gate.yaml index c2eb4c548..1cd391193 100644 --- a/playbooks/airship-airshipctl-build-gate.yaml +++ b/playbooks/airship-airshipctl-build-gate.yaml @@ -90,16 +90,16 @@ disk_format: qcow2 ephemeral_disk_size: 20G ephemeral_vm_cfg: "{{ ephemeral_vm_cfg }}" - ephemeral_vm_memory_mb: 6124 + ephemeral_vm_memory_mb: 6144 ephemeral_vm_vcpus: 4 target_disk_size: 20G target_vm_cfg: "{{ target_vm_cfg }}" - target_vm_memory_mb: 6124 + target_vm_memory_mb: 7168 target_vm_vcpus: 2 target_vms_count: 1 worker_disk_size: 20G worker_vm_cfg: "{{ worker_vm_cfg }}" - worker_vm_memory_mb: 6124 + worker_vm_memory_mb: 7168 worker_vm_vcpus: 2 worker_vms_count: 1 airship_gate_file_exchanger: diff --git a/tools/deployment/30_deploy_controlplane.sh b/tools/deployment/30_deploy_controlplane.sh index b9b374b3b..9e774d50d 100755 --- a/tools/deployment/30_deploy_controlplane.sh +++ b/tools/deployment/30_deploy_controlplane.sh @@ -14,9 +14,7 @@ set -ex -TARGET_IMAGE_DIR="/srv/images" EPHEMERAL_DOMAIN_NAME="air-ephemeral" -TARGET_IMAGE_URL="https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img" export KUBECONFIG=${KUBECONFIG:-"$HOME/.airship/kubeconfig"} export KUBECONFIG_TARGET_CONTEXT=${KUBECONFIG_TARGET_CONTEXT:-"target-cluster"} @@ -31,22 +29,6 @@ do xargs -I{} sudo virsh change-media $vm {} --eject || : done -echo "Download target image" -DOWNLOAD="200" -if [ -e ${TARGET_IMAGE_DIR}/target-image.qcow2 ] -then - MTIME=$(date -d @$(stat -c %Y ${TARGET_IMAGE_DIR}/target-image.qcow2) +"%a, %d %b %Y %T %Z") - DOWNLOAD=$(curl -sSLI \ - --write-out '%{http_code}' \ - -H "If-Modified-Since: ${MTIME}" \ - ${TARGET_IMAGE_URL} | tail -1) -fi -if [ "${DOWNLOAD}" != "304" ] -then - curl -sSLo ${TARGET_IMAGE_DIR}/target-image.qcow2 ${TARGET_IMAGE_URL} -fi -md5sum /srv/images/target-image.qcow2 | cut -d ' ' -f 1 > ${TARGET_IMAGE_DIR}/target-image.qcow2.md5sum - echo "Create target k8s cluster resources" airshipctl phase run controlplane-ephemeral --debug