updates
This commit is contained in:
51
scripts/build-golden.sh
Executable file
51
scripts/build-golden.sh
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
BASE_IMAGE="$1"
|
||||
GOLDEN_IMAGE="$2"
|
||||
SSH_PUB_KEY="${3:-$HOME/.ssh/id_rsa.pub}"
|
||||
|
||||
if [ -z "$BASE_IMAGE" ] || [ -z "$GOLDEN_IMAGE" ]; then
|
||||
echo "Usage: $0 <base_image> <golden_image> [ssh_pub_key]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Creating golden image: $GOLDEN_IMAGE"
|
||||
cp "$BASE_IMAGE" "$GOLDEN_IMAGE"
|
||||
|
||||
export LIBGUESTFS_BACKEND=direct
|
||||
|
||||
sudo virt-customize -a "$GOLDEN_IMAGE" \
|
||||
--install rakudo,rakudo-zef,perl,git,openssh-server \
|
||||
--run-command 'useradd -m rocky && echo "rocky:rockypass" | chpasswd' \
|
||||
--run-command 'echo "rocky ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/rocky && chmod 0440 /etc/sudoers.d/rocky' \
|
||||
--ssh-inject root:file:"$SSH_PUB_KEY" \
|
||||
--ssh-inject rocky:file:"$SSH_PUB_KEY" \
|
||||
--root-password password:rockytesting \
|
||||
--run-command 'systemctl enable sshd' \
|
||||
--selinux-relabel
|
||||
|
||||
echo "Bootstrapping Sparrowdo..."
|
||||
BOOTSTRAP_VM="bootstrap-$$"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
VM_IP=$("$SCRIPT_DIR/provision_vm.sh" "$BOOTSTRAP_VM" "$GOLDEN_IMAGE" 60 | tail -1)
|
||||
|
||||
if [ -z "$VM_IP" ] || [ "$VM_IP" = "ERROR" ]; then
|
||||
echo "ERROR: Failed to provision bootstrap VM"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sleep 5
|
||||
|
||||
SSH_KEY="${SSH_PUB_KEY%.pub}"
|
||||
sparrowdo --host="$VM_IP" --ssh_user=rocky --ssh_private_key="$SSH_KEY" \
|
||||
--ssh_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
|
||||
--bootstrap --color
|
||||
|
||||
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||
rocky@"$VM_IP" 'sudo shutdown -h now' 2>/dev/null || true
|
||||
|
||||
sleep 10
|
||||
"$SCRIPT_DIR/cleanup_vm.sh" "$BOOTSTRAP_VM"
|
||||
|
||||
echo "Golden image ready: $GOLDEN_IMAGE"
|
||||
Reference in New Issue
Block a user