server_init/packer/build.sh

86 lines
2.5 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
VARS_FILE="server.pkrvars.hcl"
collect_values() {
echo "=== Server Configuration ==="
echo ""
read -p "Base domain: " BASE_DOMAIN
read -p "SSH public key path [~/.ssh/id_ed25519.pub]: " PUBKEY_PATH
PUBKEY_PATH="${PUBKEY_PATH:-$HOME/.ssh/id_ed25519.pub}"
if [ ! -f "$PUBKEY_PATH" ]; then
echo "Warning: $PUBKEY_PATH not found, leaving SSH key empty"
SSH_PUBKEY=""
else
SSH_PUBKEY=$(cat "$PUBKEY_PATH")
fi
echo ""
echo "--- JuiceFS / Nextcloud Storage ---"
read -p "S3 endpoint (e.g. https://s3.amazonaws.com): " JUICEFS_S3_ENDPOINT
read -p "S3 bucket name: " JUICEFS_S3_BUCKET
read -p "S3 access key: " JUICEFS_S3_ACCESS_KEY
read -s -p "S3 secret key: " JUICEFS_S3_SECRET_KEY
echo
read -p "JuiceFS local cache size [50G]: " JUICEFS_CACHE_SIZE
JUICEFS_CACHE_SIZE="${JUICEFS_CACHE_SIZE:-50G}"
cat > "$VARS_FILE" <<EOF
base_domain = "$BASE_DOMAIN"
ssh_pubkey = "$SSH_PUBKEY"
juicefs_s3_endpoint = "$JUICEFS_S3_ENDPOINT"
juicefs_s3_bucket = "$JUICEFS_S3_BUCKET"
juicefs_s3_access_key = "$JUICEFS_S3_ACCESS_KEY"
juicefs_s3_secret_key = "$JUICEFS_S3_SECRET_KEY"
juicefs_cache_size = "$JUICEFS_CACHE_SIZE"
EOF
echo ""
echo "Configuration saved to $VARS_FILE"
}
if [ -f "$VARS_FILE" ]; then
echo "Existing configuration found ($VARS_FILE):"
echo ""
grep -v "secret_key" "$VARS_FILE"
echo " (secret keys hidden)"
echo ""
read -p "Use existing config? [Y/n]: " USE_EXISTING
if [[ "$USE_EXISTING" =~ ^[Nn] ]]; then
collect_values
fi
else
collect_values
fi
echo ""
echo "=== Initializing Packer plugins ==="
packer init ubuntu-server.pkr.hcl
echo ""
echo "=== Building image ==="
echo "This will take 15-30 minutes depending on your machine."
echo ""
packer build -var-file="$VARS_FILE" ubuntu-server.pkr.hcl
echo ""
echo "==========================================="
echo " Image built successfully!"
echo "==========================================="
echo " Output: $SCRIPT_DIR/output/packer-ubuntu-server"
echo ""
echo " To test locally:"
echo " qemu-system-x86_64 -m 4096 -hda output/packer-ubuntu-server -enable-kvm"
echo ""
echo " To convert for other formats:"
echo " qemu-img convert -f qcow2 -O raw output/packer-ubuntu-server output/server.raw"
echo " qemu-img convert -f qcow2 -O vmdk output/packer-ubuntu-server output/server.vmdk"
echo "==========================================="