From 4e4012df28630921ff082d22797113fa3c6c7e0f Mon Sep 17 00:00:00 2001 From: Xiaofeng Wang Date: Fri, 2 Jul 2021 10:38:57 +0800 Subject: [PATCH] test: Update ostree.sh to cover bz#1896178 For RHEL 8.5, user and ssh key are added in blueprint. For Fedora 33, RHEL 8.3 and 8.4, user and ssh key have to be added in ks file due to bz#1896178. bz#1896178 has been fixed already on RHEL 8.5 only, but still exists on Fedora 33, RHEL 8.3 and 8.4. This update covers Fedora 33, RHEL 8.5, RHEL 8.4 and RHEL 8.3. --- test/cases/ostree.sh | 52 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/test/cases/ostree.sh b/test/cases/ostree.sh index b8c49e983..36cda5785 100755 --- a/test/cases/ostree.sh +++ b/test/cases/ostree.sh @@ -17,21 +17,25 @@ case "${ID}-${VERSION_ID}" in IMAGE_TYPE=fedora-iot-commit OSTREE_REF="fedora/33/${ARCH}/iot" OS_VARIANT="fedora33" + USER_IN_COMMIT="false" BOOT_LOCATION="https://mirrors.rit.edu/fedora/fedora/linux/releases/33/Everything/x86_64/os/";; "rhel-8.3") IMAGE_TYPE=rhel-edge-commit OSTREE_REF="rhel/8/${ARCH}/edge" OS_VARIANT="rhel8.3" + USER_IN_COMMIT="false" BOOT_LOCATION="http://download.devel.redhat.com/released/rhel-8/RHEL-8/8.3.0/BaseOS/x86_64/os/";; "rhel-8.4") IMAGE_TYPE=rhel-edge-commit OSTREE_REF="rhel/8/${ARCH}/edge" OS_VARIANT="rhel8-unknown" + USER_IN_COMMIT="false" BOOT_LOCATION="$COMPOSE_URL/compose/BaseOS/x86_64/os/";; "rhel-8.5") IMAGE_TYPE=edge-commit OSTREE_REF="rhel/8/${ARCH}/edge" OS_VARIANT="rhel8-unknown" + USER_IN_COMMIT="true" BOOT_LOCATION="$COMPOSE_URL/compose/BaseOS/x86_64/os/";; *) echo "unsupported distro: ${ID}-${VERSION_ID}" @@ -94,6 +98,7 @@ EOF TEST_UUID=$(uuidgen) IMAGE_KEY="osbuild-composer-ostree-test-${TEST_UUID}" GUEST_ADDRESS=192.168.100.50 +SSH_USER="admin" # Set up temporary files. TEMPDIR=$(mktemp -d) @@ -197,7 +202,7 @@ build_image() { # Wait for the ssh server up to be. wait_for_ssh_up () { - SSH_STATUS=$(sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" admin@"${1}" '/bin/bash -c "echo -n READY"') + SSH_STATUS=$(sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" "${SSH_USER}@${1}" '/bin/bash -c "echo -n READY"') if [[ $SSH_STATUS == READY ]]; then echo 1 else @@ -257,6 +262,19 @@ name = "python36" version = "*" EOF +# RHEL 8.5 and later support user configuration in blueprint for edge-commit image +if [[ "${USER_IN_COMMIT}" == "true" ]]; then + tee -a "$BLUEPRINT_FILE" > /dev/null << EOF +[[customizations.user]] +name = "${SSH_USER}" +description = "Administrator account" +password = "\$6\$GRmb7S0p8vsYmXzH\$o0E020S.9JQGaHkszoog4ha4AQVs3sk8q0DvLjSMxoxHBKnB2FBXGQ/OkwZQfW/76ktHd0NX5nls2LPxPuUdl." +key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" +home = "/home/${SSH_USER}/" +groups = ["wheel"] +EOF +fi + # Build installation image. build_image "$BLUEPRINT_FILE" ostree @@ -300,8 +318,8 @@ timezone --utc Etc/UTC selinux --enforcing rootpw --lock --iscrypted locked -user --name=admin --groups=wheel --iscrypted --password=\$6\$1LgwKw9aOoAi/Zy9\$Pn3ErY1E8/yEanJ98evqKEW.DZp24HTuqXPJl6GYCm8uuobAmwxLv7rGCvTRZhxtcYdmC0.XnYRSR9Sh6de3p0 -sshkey --username=admin "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" +user --name=${SSH_USER} --groups=wheel --iscrypted --password=\$6\$1LgwKw9aOoAi/Zy9\$Pn3ErY1E8/yEanJ98evqKEW.DZp24HTuqXPJl6GYCm8uuobAmwxLv7rGCvTRZhxtcYdmC0.XnYRSR9Sh6de3p0 +sshkey --username=${SSH_USER} "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" bootloader --timeout=1 --append="net.ifnames=0 modprobe.blacklist=vc4" @@ -315,8 +333,8 @@ poweroff %post --log=/var/log/anaconda/post-install.log --erroronfail -# no sudo password for user admin -echo -e 'admin\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers +# no sudo password for SSH user +echo -e '${SSH_USER}\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers # Remove any persistent NIC rules generated by udev rm -vf /etc/udev/rules.d/*persistent-net*.rules @@ -345,6 +363,11 @@ echo "(Don't worry -- that out-of-space error was expected.)" %end STOPHERE +# RHEL 8.5 and later configures user in blueprint for edge-commit image +if [[ "${USER_IN_COMMIT}" == "true" ]]; then + sudo sed -i '/^user\|^sshkey/d' "${KS_FILE}" +fi + # Install ostree image via anaconda. greenprint "Install ostree image via anaconda" sudo virt-install --initrd-inject="${KS_FILE}" \ @@ -403,6 +426,19 @@ name = "wget" version = "*" EOF +# RHEL 8.5 and later support user configuration in blueprint for edge-commit image +if [[ "${USER_IN_COMMIT}" == "true" ]]; then + tee -a "$BLUEPRINT_FILE" > /dev/null << EOF +[[customizations.user]] +name = "${SSH_USER}" +description = "Administrator account" +password = "\$6\$GRmb7S0p8vsYmXzH\$o0E020S.9JQGaHkszoog4ha4AQVs3sk8q0DvLjSMxoxHBKnB2FBXGQ/OkwZQfW/76ktHd0NX5nls2LPxPuUdl." +key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" +home = "/home/${SSH_USER}/" +groups = ["wheel"] +EOF +fi + # Build upgrade image. build_image "$BLUEPRINT_FILE" upgrade @@ -435,8 +471,8 @@ UPGRADE_HASH=$(jq -r '."ostree-commit"' < "${UPGRADE_PATH}"/compose.json) # Upgrade image/commit. greenprint "Upgrade ostree image/commit" -sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" admin@${GUEST_ADDRESS} 'sudo rpm-ostree upgrade || { sudo rpm-ostree status; sudo journalctl -b -r -u rpm-ostreed; exit 1; }' -sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" admin@${GUEST_ADDRESS} 'nohup sudo systemctl reboot &>/dev/null & exit' +sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" "${SSH_USER}@${GUEST_ADDRESS}" 'sudo rpm-ostree upgrade || { sudo rpm-ostree status; sudo journalctl -b -r -u rpm-ostreed; exit 1; }' +sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" "${SSH_USER}@${GUEST_ADDRESS}" 'nohup sudo systemctl reboot &>/dev/null & exit' # Sleep 10 seconds here to make sure vm restarted already sleep 10 @@ -463,7 +499,7 @@ ${GUEST_ADDRESS} [ostree_guest:vars] ansible_python_interpreter=/usr/bin/python3 -ansible_user=admin +ansible_user=${SSH_USER} ansible_private_key_file=${SSH_KEY} ansible_ssh_common_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" EOF