Add act-runner target for building local ACT env
This commit is contained in:
102
act-runner/rebuild.bash
Normal file
102
act-runner/rebuild.bash
Normal file
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "ERROR: Specify config path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONFIG_PATH="${1}"
|
||||
|
||||
if [ ! -f "${CONFIG_PATH}/act-runner.bu" ]; then
|
||||
echo "ERROR: Config path ${CONFIG_PATH} must include the act-runner.bu file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NAME="${HOSTNAME}-act-runner"
|
||||
STREAM="stable"
|
||||
BUTANE_CONFIG="${CONFIG_PATH}/act-runner.bu"
|
||||
VCPUS="8"
|
||||
RAM_MB="16132"
|
||||
DISK_GB="100"
|
||||
|
||||
IGNITION_PATH="${CONFIG_PATH}/${NAME}.ign"
|
||||
IMAGE_PATH="${CONFIG_PATH}/${NAME}.qcow2"
|
||||
KVM="qemu:///session"
|
||||
|
||||
if ! systemctl is-active libvirtd --quiet; then
|
||||
systemctl start libvirtd
|
||||
fi
|
||||
|
||||
all_vms=$(virsh --connect="${KVM}" list --all)
|
||||
|
||||
if [[ $all_vms == *"${NAME}"* ]]; then
|
||||
running_vms=$(virsh --connect="$KVM" list)
|
||||
if [[ $running_vms == *"${NAME}"* ]]; then
|
||||
echo "Shutting down VM ${NAME}..."
|
||||
virsh --connect="${KVM}" destroy "${NAME}"
|
||||
fi
|
||||
echo "Destroying VM ${NAME}..."
|
||||
virsh --connect="${KVM}" undefine --domain="${NAME}" --remove-all-storage --managed-save
|
||||
echo "Deleting image ${IMAGE_PATH}..."
|
||||
rm -rf "${IMAGE_PATH}"
|
||||
echo "Deleting ignition file ${IGNITION_PATH}..."
|
||||
rm "${IGNITION_PATH}"
|
||||
fi
|
||||
|
||||
download_dir=$(mktemp -d)
|
||||
|
||||
podman run \
|
||||
--rm \
|
||||
-v "${download_dir}:/data:z" \
|
||||
-w /data \
|
||||
quay.io/coreos/coreos-installer:release \
|
||||
download -s "${STREAM}" -p qemu -f qcow2.xz --decompress
|
||||
|
||||
download_image=$(command ls "${download_dir}"/*.qcow2)
|
||||
|
||||
mv "${download_image}" "${IMAGE_PATH}"
|
||||
|
||||
echo "${HOSTNAME}-act-runner" >"${CONFIG_PATH}/hostname"
|
||||
cat ~/.ssh/*.pub >"${CONFIG_PATH}/core_ssh_keys.pub"
|
||||
|
||||
mkdir --parents "${CONFIG_PATH}/host_keys"
|
||||
|
||||
key_formats=(
|
||||
"rsa"
|
||||
"ed25519"
|
||||
"ecdsa"
|
||||
)
|
||||
|
||||
for key in "${key_formats[@]}"; do
|
||||
if [ ! -f "${CONFIG_PATH}/host_keys/ssh_${key}" ]; then
|
||||
ssh-keygen -q \
|
||||
-f "${CONFIG_PATH}/host_keys/ssh_${key}" \
|
||||
-t "${key}" \
|
||||
-C "${HOSTNAME}-act-runner" \
|
||||
-N ''
|
||||
fi
|
||||
done
|
||||
|
||||
podman run \
|
||||
--interactive \
|
||||
--rm \
|
||||
-v "${CONFIG_PATH}:/data:z" \
|
||||
quay.io/coreos/butane:release \
|
||||
--pretty --strict --files-dir=/data < "${BUTANE_CONFIG}" > "${IGNITION_PATH}"
|
||||
|
||||
chcon --verbose --type svirt_home_t "${IGNITION_PATH}"
|
||||
|
||||
virt-install \
|
||||
--connect="${KVM}" \
|
||||
--name="${NAME}" \
|
||||
--vcpus="${VCPUS}" \
|
||||
--memory="${RAM_MB}" \
|
||||
--os-variant="fedora-coreos-${STREAM}" \
|
||||
--import \
|
||||
--noautoconsole \
|
||||
--graphics=none \
|
||||
--disk="size=${DISK_GB},backing_store=${IMAGE_PATH}" \
|
||||
--network bridge=virbr0 \
|
||||
--qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${IGNITION_PATH}"
|
||||
Reference in New Issue
Block a user