public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Chuck Lever <cel@kernel.org>
To: <kdevops@lists.linux.dev>
Cc: Chuck Lever <chuck.lever@oracle.com>
Subject: [PATCH v2 11/12] scripts: Remove the bringup_guestfs.sh script
Date: Fri, 30 May 2025 13:52:28 -0400	[thread overview]
Message-ID: <20250530175229.489925-12-cel@kernel.org> (raw)
In-Reply-To: <20250530175229.489925-1-cel@kernel.org>

From: Chuck Lever <chuck.lever@oracle.com>

Clean up: This script is no longer used.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 scripts/bringup_guestfs.sh | 391 -------------------------------------
 1 file changed, 391 deletions(-)
 delete mode 100755 scripts/bringup_guestfs.sh

diff --git a/scripts/bringup_guestfs.sh b/scripts/bringup_guestfs.sh
deleted file mode 100755
index 55b13a0cb2cc..000000000000
--- a/scripts/bringup_guestfs.sh
+++ /dev/null
@@ -1,391 +0,0 @@
-#!/bin/bash
-# SPDX-License-Identifier: copyleft-next-0.3.1
-
-[ -z "${TOPDIR}" ] && TOPDIR='.'
-source ${TOPDIR}/.config
-source ${TOPDIR}/scripts/lib.sh
-
-if [[ "${CONFIG_GUESTFS_BRINGUP_DEBUG_0+x}" && \
-	   "${CONFIG_GUESTFS_BRINGUP_DEBUG_0}" == "y" ]]; then
-	set -x
-fi
-
-if [[ "${CONFIG_GUESTFS_BRINGUP_DEBUG_1+x}" && \
-	  "${CONFIG_GUESTFS_BRINGUP_DEBUG_1}" == "y" ]]; then
-	set -euxo pipefail
-fi
-
-export LIBVIRT_DEFAULT_URI=$CONFIG_LIBVIRT_URI
-
-# We use the NVMe setting for virtio too (go figure), but IDE
-# requires qcow2
-#
-IMG_FMT="qcow2"
-if [ "${CONFIG_LIBVIRT_EXTRA_DRIVE_FORMAT_RAW}" = "y" ]; then
-	IMG_FMT="raw"
-fi
-STORAGEDIR="${CONFIG_LIBVIRT_STORAGE_POOL_PATH}/${CONFIG_KDEVOPS_STORAGE_POOL_USER}/guestfs"
-QEMU_GROUP=$CONFIG_LIBVIRT_QEMU_GROUP
-GUESTFSDIR="${TOPDIR}/guestfs"
-OS_VERSION=${CONFIG_VIRT_BUILDER_OS_VERSION}
-BASE_IMAGE_DIR="${STORAGEDIR}/base_images"
-BASE_IMAGE="${BASE_IMAGE_DIR}/${OS_VERSION}.raw"
-
-build_custom_source()
-{
-	SOURCE_TMP=$(mktemp)
-	cat <<_EOT >$SOURCE_TMP
-[local]
-uri=file:///${CUSTOM_INDEX}
-proxy=off
-_EOT
-	sudo mv $SOURCE_TMP $CUSTOM_SOURCE
-}
-
-build_custom_index()
-{
-	cat <<_EOT >$CUSTOM_INDEX
-[$OS_VERSION]
-file=${OS_VERSION}.raw
-_EOT
-}
-
-fetch_custom_image()
-{
-	wget --directory-prefix=$CUSTOM_IMAGE_DIR $CONFIG_GUESTFS_CUSTOM_RAW_IMAGE_URL
-	if [[ $? -ne 0 ]]; then
-		echo -e "Could not download:\n$CONFIG_GUESTFS_CUSTOM_RAW_IMAGE_URL"
-		exit 1
-	fi
-}
-
-check_custom_image()
-{
-	SHA512SUMS_FILE="$(basename $CONFIG_GUESTFS_CUSTOM_RAW_IMAGE_SHA512SUMS_URL)"
-	CUSTOM_IMAGE_SHA512SUM="$CUSTOM_IMAGE_DIR/$SHA512SUMS_FILE"
-	if [[ ! -f $CUSTOM_IMAGE_SHA512SUM ]]; then
-		wget --directory-prefix=$CUSTOM_IMAGE_DIR $CONFIG_GUESTFS_CUSTOM_RAW_IMAGE_SHA512SUMS_URL
-		if [[ $? -ne 0 ]]; then
-			echo "Could not get sha512sum file: $CONFIG_GUESTFS_CUSTOM_RAW_IMAGE_SHA512SUMS_URL"
-			exit 1
-		fi
-	fi
-	echo "Checking $CUSTOM_IMAGE_DIR/$SHA512SUMS_FILE"
-
-	# This subshell let's us keep below in the current directory.
-	# sha512sum files are relative to the local directory
-	(cd $CUSTOM_IMAGE_DIR && sha512sum --ignore-missing -c $SHA512SUMS_FILE)
-	if [[ $? -ne 0 ]]; then
-		echo "Invalid SHA512SUM checksum for $CUSTOM_IMAGE as per $SHA512SUMS_FILE"
-		exit 1
-	fi
-	touch $CUSTOM_IMAGE_OK
-}
-
-# Ensure folks are not surprised. If you're using rolling distros you know what
-# you are doing. This gives us the right later to change this at will.
-#
-# In the future we can make this smoother, as we used to have it with vagrant
-# update, but for now downloading *once* for a rolling distro seems ok to start.
-# We give enough information so you can update.
-build_warn_rolling_distro()
-{
-	echo "------------------------------------------------------------------"
-	echo "This is a rolling distribution release! To upgrade just do:"
-	echo
-	echo "rm -rf ${CUSTOM_IMAGE}/*"
-	echo "rm -f  ${CUSTOM_SOURCE}"
-	echo "rm -f  ${CUSTOM_INDEX}"
-	echo
-	echo "Running guests always use their own copy. To rebuild your custom"
-	echo "base image from the custom image, also remove the base image:"
-	echo
-	echo "rm -f  ${BASE_IMAGE}"
-	echo
-	echo "This can always be done safely without affecting running guests."
-	echo "------------------------------------------------------------------"
-}
-
-build_custom_image()
-{
-	CUSTOM_IMAGE_DIR="${STORAGEDIR}/custom_images/${OS_VERSION}"
-	CUSTOM_IMAGE="${CUSTOM_IMAGE_DIR}/${OS_VERSION}.raw"
-	CUSTOM_IMAGE_OK="${CUSTOM_IMAGE_DIR}.ok"
-	CUSTOM_SOURCE="/etc/virt-builder/repos.d/kdevops-custom-images-${OS_VERSION}.conf"
-	mkdir -p ${CUSTOM_IMAGE_DIR}
-	CUSTOM_INDEX="$(realpath ${CUSTOM_IMAGE_DIR}/index)"
-
-	if [[ ! -f $CUSTOM_IMAGE && "$CONFIG_GUESTFS_HAS_CUSTOM_RAW_IMAGE_URL" == "y" ]]; then
-		fetch_custom_image
-	fi
-
-	if [[ ! -f $CUSTOM_IMAGE_OK && "$CONFIG_GUESTFS_HAS_CUSTOM_RAW_IMAGE_SHA512SUMS" == "y" ]]; then
-		check_custom_image
-	fi
-
-	if [[ ! -f $CUSTOM_IMAGE ]]; then
-		echo "Custom image on path $CUSTOM_IMAGE not found"
-		exit 1
-	fi
-
-	if [[ ! -f $CUSTOM_SOURCE ]]; then
-		build_custom_source
-	fi
-
-	if [[ ! -f $CUSTOM_INDEX ]]; then
-		build_custom_index
-	fi
-
-	echo "Custom virt-builder source: $CUSTOM_SOURCE"
-	echo "Custom virt-builder index:  $CUSTOM_INDEX"
-	echo "Custom image source:        $CUSTOM_IMAGE"
-
-	if [[ "$CONFIG_GUESTFS_HAS_CUSTOM_RAW_IMAGE_ROLLING" == "y" ]]; then
-		build_warn_rolling_distro
-	fi
-
-	echo "Going to build index for $OS_VERSION ..."
-	virt-builder-repository --no-compression $CUSTOM_IMAGE_DIR
-	if [[ $? -ne 0 ]]; then
-		echo "Failed to build repository ..."
-		exit 1
-	fi
-
-	# Note, we don't build $BASE_IMAGE, virt-builder does that later. We
-	# just build $virt-builder, which is the pristine upstream image.
-}
-
-handle_rhel_activation()
-{
-	if [ -n "$CONFIG_RHEL_ORG_ID" -a -n "$CONFIG_RHEL_ACTIVATION_KEY" ]; then
-		DO_UNREG=1
-		cat <<_EOT >>$cmdfile
-run-command subscription-manager register --org=${CONFIG_RHEL_ORG_ID} --activationkey=${CONFIG_RHEL_ACTIVATION_KEY}
-_EOT
-	fi
-}
-
-handle_rhel_unreg()
-{
-	cat <<_EOT >>$cmdfile
-sm-unregister
-_EOT
-}
-
-copy_yum_repo()
-{
-	cat <<_EOT >>$cmdfile
-copy-in $CONFIG_KDEVOPS_CUSTOM_YUM_REPOFILE:/etc/yum.repos.d
-_EOT
-}
-
-copy_host_sources()
-{
-	TARGET_DIR="$(dirname $CONFIG_GUESTFS_DISTRO_SOURCE_AND_DEST_FILE)"
-	cat <<_EOT >>$cmdfile
-mkdir $TARGET_DIR
-copy-in $CONFIG_GUESTFS_DISTRO_SOURCE_AND_DEST_FILE:$TARGET_DIR
-_EOT
-}
-
-pre_install_customizations()
-{
-	KDEVOPS_UID=""
-	if getent passwd kdevops > /dev/null 2>&1; then
-		KDEVOPS_UID="-u `id -u kdevops`"
-	fi
-	if echo $OS_VERSION | grep -qE "^(rhel|fedora|centos)"; then
-		UPDATE_GRUB_CMD="/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"
-	else
-		UPDATE_GRUB_CMD="/usr/sbin/update-grub2"
-	fi
-	cat <<_EOT >>$cmdfile
-install sudo,qemu-guest-agent,python3,bash
-run-command useradd ${KDEVOPS_UID} -s /bin/bash -m kdevops
-append-line /etc/sudoers.d/kdevops:kdevops   ALL=(ALL)       NOPASSWD: ALL
-edit /etc/default/grub:s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"/
-run-command $UPDATE_GRUB_CMD
-root-password password:kdevops
-_EOT
-}
-
-# Ugh, debian has to be told to bring up the network and regenerate ssh keys
-# Hope we get that interface name right!
-debian_pre_install_hacks()
-{
-	cat <<_EOT >>$cmdfile
-install isc-dhcp-client,ifupdown
-mkdir /etc/network/interfaces.d/
-append-line /etc/network/interfaces.d/enp1s0:auto enp1s0
-append-line /etc/network/interfaces.d/enp1s0:allow-hotplug enp1s0
-append-line /etc/network/interfaces.d/enp1s0:iface enp1s0 inet dhcp
-firstboot-command systemctl disable systemd-networkd-wait-online.service
-firstboot-command systemctl stop ssh
-firstboot-command DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true dpkg-reconfigure -p low --force openssh-server
-firstboot-command systemctl start ssh
-firstboot-command apt update && apt upgrade --yes
-uninstall unattended-upgrades
-_EOT
-	# CONFIG_GUESTFS_COPY_SOURCES_FROM_HOST_TO_GUEST will not work
-	# if /etc/nsswitch.conf has a line like this:
-	#
-	# hosts:          files myhostname resolve [!UNAVAIL=return] dns
-	#
-	# We need DNS to be used so virb0 will be used for a DNS request
-	# For the life of me I can't get the following line to work with
-	# the virt-builder command and so we do a full edit of the file for now
-	# edit /etc/nsswitch.conf:'s/\[!UNAVAIL=return\]//'
-	if [[ "${CONFIG_GUESTFS_DEBIAN_TRIXIE+x}" && \
-		  "$CONFIG_GUESTFS_DEBIAN_TRIXIE" == "y" ]]; then
-		cat <<_EOT >>$cmdfile
-write /etc/nsswitch.conf: # kdevops generated /etc/nsswitch.conf
-append-line /etc/nsswitch.conf:passwd:         files
-append-line /etc/nsswitch.conf:group:          files
-append-line /etc/nsswitch.conf:shadow:         files
-append-line /etc/nsswitch.conf:gshadow:        files
-append-line /etc/nsswitch.conf:hosts:          files myhostname resolve dns
-append-line /etc/nsswitch.conf:networks:       files
-append-line /etc/nsswitch.conf:protocols:      db files
-append-line /etc/nsswitch.conf:services:       db files
-append-line /etc/nsswitch.conf:ethers:         db files
-append-line /etc/nsswitch.conf:rpc:            db files
-append-line /etc/nsswitch.conf:netgroup:       nis
-uninstall cloud-init
-write /etc/default/locale:LANG=en_US.UTF-8
-append-line /etc/default/locale:LANGUAGE=en_US:en
-write /etc/locale.gen:en_US.UTF-8 UTF-8
-firstboot-command locale-gen en_US.UTF-8
-firstboot-command update-locale LANG=en_US.UTF-8
-firstboot-command DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true dpkg-reconfigure -p low --force locales
-firstboot-command systemctl stop ssh
-firstboot-command systemctl start ssh
-_EOT
-		if [[ "${CONFIG_GUESTFS_COPY_SOURCES_FROM_HOST_TO_GUEST+x}" && \
-			  "$CONFIG_GUESTFS_COPY_SOURCES_FROM_HOST_TO_GUEST" == "y" ]]; then
-		cat <<_EOT >>$cmdfile
-delete /etc/apt/sources.list.d/debian.sources
-_EOT
-		fi
-	fi
-}
-
-USE_SUDO=""
-if [[ "$CONFIG_LIBVIRT_URI_SYSTEM" == "y" ]]; then
-	USE_SUDO="sudo "
-fi
-
-cmdfile=$(mktemp)
-
-if [ ! -f $BASE_IMAGE ]; then
-	if [[ "${CONFIG_GUESTFS_HAS_CUSTOM_RAW_IMAGE+x}" && \
-		  "$CONFIG_GUESTFS_HAS_CUSTOM_RAW_IMAGE" == "y" ]]; then
-		build_custom_image
-	fi
-
-	DO_UNREG=0
-	if echo $OS_VERSION | grep -q '^rhel'; then
-		handle_rhel_activation
-	fi
-
-	if [ -n "$CONFIG_KDEVOPS_CUSTOM_YUM_REPOFILE" ]; then
-		copy_yum_repo
-	fi
-
-	if [[ "${CONFIG_GUESTFS_COPY_SOURCES_FROM_HOST_TO_GUEST+x}" && \
-		  "$CONFIG_GUESTFS_COPY_SOURCES_FROM_HOST_TO_GUEST" == "y" ]]; then
-		copy_host_sources
-	fi
-
-	pre_install_customizations
-
-	if [ $DO_UNREG -ne 0 ]; then
-		handle_rhel_unreg
-	fi
-
-	if echo $OS_VERSION | grep -q '^debian'; then
-		debian_pre_install_hacks
-	fi
-
-	echo "Generating new base image for ${OS_VERSION}"
-	$USE_SUDO virt-builder ${OS_VERSION} --arch `uname -m` -o $BASE_IMAGE --size 20G --format raw --commands-from-file $cmdfile
-	if [[ $? -ne 0 ]]; then
-		echo "Failed to build custom image $BASE_IMAGE"
-		exit 1
-	fi
-fi
-
-# FIXME: is there a yaml equivalent of jq?
-grep -e '^  - name: ' ${TOPDIR}/guestfs/kdevops_nodes.yaml | sed 's/^  - name: //' | while read name
-do
-	#
-	# If the guest is already defined, then just stop what we're doing
-	# and plead to the developer to clean things up.
-	#
-	if virsh list --all | grep --quiet --word-regexp "$name"; then
-		output_domstate=$(virsh domstate $name 2>/dev/null)
-		echo "Domain $name is already defined. (state: $output_domstate)"
-		if [ "$output_domstate" != "running" ]; then
-			virsh start $name
-		fi
-		exit 0
-	fi
-
-	SSH_KEY_DIR="${GUESTFSDIR}/$name/ssh"
-	SSH_KEY="${SSH_KEY_DIR}/id_ed25519"
-
-	# Generate a new ssh key
-	mkdir -p "$SSH_KEY_DIR"
-	chmod 0700 "$SSH_KEY_DIR"
-	rm -f $SSH_KEY $SSH_KEY.pub
-	ssh-keygen -q -t ed25519 -f $SSH_KEY -N ""
-
-	mkdir -p "$STORAGEDIR/$name"
-
-	# Copy the base image and prep it
-	ROOTIMG="$STORAGEDIR/$name/root.raw"
-	cp --reflink=auto $BASE_IMAGE $ROOTIMG
-	TZ="$(timedatectl show -p Timezone --value)"
-	$USE_SUDO virt-sysprep -a $ROOTIMG --hostname $name --ssh-inject "kdevops:file:$SSH_KEY.pub" --timezone $TZ
-
-	if [[ "${CONFIG_LIBVIRT_ENABLE_LARGEIO+x}" && \
-		  "$CONFIG_LIBVIRT_ENABLE_LARGEIO" == "y" ]]; then
-		lbs_idx=0
-		for i in $(seq 1 $(($CONFIG_QEMU_LARGEIO_MAX_POW_LIMIT+1))); do
-			for x in $(seq 0 $CONFIG_QEMU_EXTRA_DRIVE_LARGEIO_NUM_DRIVES_PER_SPACE); do
-				diskimg="$STORAGEDIR/$name/extra${lbs_idx}.${IMG_FMT}"
-				rm -f $diskimg
-				qemu-img create -f $IMG_FMT "$diskimg" 100G
-				if [[ "$CONFIG_LIBVIRT_URI_SYSTEM" == "y" ]]; then
-					chmod g+rw $diskimg
-					chgrp $QEMU_GROUP $diskimg
-				fi
-				let lbs_idx=$lbs_idx+1
-			done
-		done
-	else
-		# build some extra disks
-		for i in $(seq 0 3); do
-			diskimg="$STORAGEDIR/$name/extra${i}.${IMG_FMT}"
-			rm -f $diskimg
-			qemu-img create -f $IMG_FMT "$STORAGEDIR/$name/extra${i}.$IMG_FMT" 100G
-			if [[ "$CONFIG_LIBVIRT_URI_SYSTEM" == "y" ]]; then
-				chmod g+rw $STORAGEDIR/$name/extra${i}.$IMG_FMT
-				chgrp $QEMU_GROUP $STORAGEDIR/$name/extra${i}.$IMG_FMT
-			fi
-		done
-	fi
-
-	virsh define $GUESTFSDIR/$name/$name.xml
-	XML_DEVICES_COUNT=$(find $GUESTFSDIR/$name/ -name pcie_passthrough_*.xml | wc -l)
-	if [[ $XML_DEVICES_COUNT -gt 0 ]]; then
-		for xml in $GUESTFSDIR/$name/pcie_passthrough_*.xml; do
-			echo "Doing PCI-E passthrough for device $xml"
-			virsh attach-device $name $xml --config
-		done
-	fi
-	virsh start $name
-	if [[ $? -ne 0 ]]; then
-		echo "Failed to start $name"
-		exit 1
-	fi
-done
-- 
2.49.0


  parent reply	other threads:[~2025-05-30 17:52 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-30 17:52 [PATCH v2 00/12] Convert bringup_guestfs to a single Ansible role Chuck Lever
2025-05-30 17:52 ` [PATCH v2 01/12] guestfs: Replace scripts/destroy_guestfs.sh with an Ansible playbook Chuck Lever
2025-05-30 17:52 ` [PATCH v2 02/12] Move the guestfs install-deps to the guestfs playbook Chuck Lever
2025-05-30 17:52 ` [PATCH v2 03/12] guestfs: Do not use the config-check tag Chuck Lever
2025-05-30 17:52 ` [PATCH v2 04/12] guestfs: Add a "bringup" tag to the guestfs role Chuck Lever
2025-05-30 17:52 ` [PATCH v2 05/12] guestfs: Copy "network" tag steps to " Chuck Lever
2025-05-30 17:52 ` [PATCH v2 06/12] guestfs: Move the QEMU_GROUP check Chuck Lever
2025-05-30 17:52 ` [PATCH v2 07/12] Add a base-image role Chuck Lever
2025-05-30 17:52 ` [PATCH v2 08/12] guestfs: Convert scripts/bringup_guestfs.sh to Ansible Chuck Lever
2025-05-30 17:52 ` [PATCH v2 09/12] guestfs: Move console-related steps to guestfs role Chuck Lever
2025-05-30 17:52 ` [PATCH v2 10/12] bringup_guestfs: Remove the role Chuck Lever
2025-05-30 17:52 ` Chuck Lever [this message]
2025-05-30 17:52 ` [PATCH v2 12/12] scripts: Remove the destroy_guestfs.sh script Chuck Lever
2025-06-03 19:29 ` [PATCH v2 00/12] Convert bringup_guestfs to a single Ansible role Luis Chamberlain
2025-06-04 14:29   ` Chuck Lever
2025-06-04 17:02     ` Luis Chamberlain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250530175229.489925-12-cel@kernel.org \
    --to=cel@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=kdevops@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox