first commit
This commit is contained in:
commit
a61c0e9e0b
20 changed files with 2905 additions and 0 deletions
171
config/defaults.sh
Normal file
171
config/defaults.sh
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Default configuration for bootc image creation
|
||||
# This file sets default values that can be overridden by user configuration
|
||||
|
||||
# Container configuration
|
||||
export CONTAINER_IMAGE="${CONTAINER_IMAGE:-localhost/debian-bootc:ostree-transformed-v2}"
|
||||
export CONTAINER_TAG="${CONTAINER_TAG:-latest}"
|
||||
|
||||
# Output configuration
|
||||
export OUTPUT_DIR="${OUTPUT_DIR:-./output}"
|
||||
export IMAGE_SIZE_GB="${IMAGE_SIZE_GB:-10}"
|
||||
export IMAGE_NAME="${IMAGE_NAME:-debian-bootc}"
|
||||
|
||||
# Build configuration
|
||||
export BUILD_TYPE="${BUILD_TYPE:-container}" # container or chroot
|
||||
export USE_APT_CACHER="${USE_APT_CACHER:-true}"
|
||||
export APT_CACHER_URL="${APT_CACHER_URL:-http://localhost:3142}"
|
||||
|
||||
# OSTree configuration
|
||||
export OSTREE_BRANCH="${OSTREE_BRANCH:-debian/trixie/x86_64}"
|
||||
export OSTREE_SUBJECT="${OSTREE_SUBJECT:-Debian trixie system}"
|
||||
export OSTREE_MODE="${OSTREE_MODE:-bare-user}"
|
||||
|
||||
# Bootloader configuration
|
||||
export BOOTLOADER_TYPE="${BOOTLOADER_TYPE:-grub}" # grub or systemd-boot
|
||||
export KERNEL_VERSION="${KERNEL_VERSION:-6.12.41+deb13-amd64}"
|
||||
export CONSOLE_OPTIONS="${CONSOLE_OPTIONS:-console=tty0 console=ttyS0,115200n8}"
|
||||
|
||||
# User configuration
|
||||
export DEFAULT_USER="${DEFAULT_USER:-debian}"
|
||||
export DEFAULT_PASSWORD="${DEFAULT_PASSWORD:-debian123}"
|
||||
export USER_UID="${USER_UID:-1000}"
|
||||
export USER_GID="${USER_GID:-1000}"
|
||||
|
||||
# Network configuration
|
||||
export ENABLE_SSH="${ENABLE_SSH:-true}"
|
||||
export ENABLE_NETWORK="${ENABLE_NETWORK:-true}"
|
||||
|
||||
# Output formats
|
||||
export OUTPUT_FORMATS="${OUTPUT_FORMATS:-qcow2}" # qcow2, iso, img, vmdk, vdi, all
|
||||
export KEEP_RAW="${KEEP_RAW:-true}"
|
||||
|
||||
# Performance configuration
|
||||
export PARALLEL_JOBS="${PARALLEL_JOBS:-$(nproc)}"
|
||||
export COMPRESSION_LEVEL="${COMPRESSION_LEVEL:-6}"
|
||||
|
||||
# Validation configuration
|
||||
export VERIFY_IMAGE="${VERIFY_IMAGE:-true}"
|
||||
export VERIFY_FILESYSTEM="${VERIFY_FILESYSTEM:-true}"
|
||||
export VERIFY_BOOTLOADER="${VERIFY_BOOTLOADER:-true}"
|
||||
|
||||
# Cleanup configuration
|
||||
export CLEANUP_WORK_DIR="${CLEANUP_WORK_DIR:-true}"
|
||||
export CLEANUP_TEMP_FILES="${CLEANUP_TEMP_FILES:-true}"
|
||||
|
||||
# Logging configuration
|
||||
export LOG_LEVEL="${LOG_LEVEL:-info}" # debug, info, warn, error
|
||||
export VERBOSE="${VERBOSE:-false}"
|
||||
|
||||
# Security configuration
|
||||
export SIGN_IMAGES="${SIGN_IMAGES:-false}"
|
||||
export GPG_KEY="${GPG_KEY:-}"
|
||||
|
||||
# Architecture configuration
|
||||
export TARGET_ARCH="${TARGET_ARCH:-amd64}"
|
||||
export TARGET_DEBIAN_RELEASE="${TARGET_DEBIAN_RELEASE:-trixie}"
|
||||
|
||||
# Package configuration
|
||||
export BASE_PACKAGES="${BASE_PACKAGES:-systemd systemd-sysv linux-image-amd64 grub-pc ostree ostree-boot openssh-server sudo}"
|
||||
export ADDITIONAL_PACKAGES="${ADDITIONAL_PACKAGES:-curl wget vim less man-db}"
|
||||
|
||||
# Debian release configuration
|
||||
export DEBIAN_RELEASE="${DEBIAN_RELEASE:-trixie}" # Default to trixie (Debian 13)
|
||||
export DEBIAN_RELEASES="trixie forky sid"
|
||||
export DEBIAN_RELEASE_NAMES="trixie=Debian 13 forky=Debian 14 sid=Debian Unstable"
|
||||
export DEBIAN_RELEASE_DESCRIPTIONS="trixie=Debian 13 (Trixie) - Testing forky=Debian 14 (Forky) - Unstable sid=Debian Sid - Always Unstable"
|
||||
|
||||
# Set TARGET_DEBIAN_RELEASE based on DEBIAN_RELEASE
|
||||
export TARGET_DEBIAN_RELEASE="$DEBIAN_RELEASE"
|
||||
|
||||
# Timeout configuration
|
||||
export BUILD_TIMEOUT="${BUILD_TIMEOUT:-3600}" # 1 hour
|
||||
export EXTRACTION_TIMEOUT="${EXTRACTION_TIMEOUT:-1800}" # 30 minutes
|
||||
export CONVERSION_TIMEOUT="${CONVERSION_TIMEOUT:-900}" # 15 minutes
|
||||
|
||||
# Print configuration
|
||||
print_config() {
|
||||
echo "=== Bootc Image Creation Configuration ==="
|
||||
echo "Container: $CONTAINER_IMAGE"
|
||||
echo "Build Type: $BUILD_TYPE"
|
||||
echo "Output Directory: $OUTPUT_DIR"
|
||||
echo "Image Size: ${IMAGE_SIZE_GB}GB"
|
||||
echo "Output Formats: $OUTPUT_FORMATS"
|
||||
echo "Bootloader: $BOOTLOADER_TYPE"
|
||||
echo "Kernel: $KERNEL_VERSION"
|
||||
echo "User: $DEFAULT_USER:$DEFAULT_PASSWORD"
|
||||
echo "Architecture: $TARGET_ARCH"
|
||||
echo "Debian Release: $DEBIAN_RELEASE ($(get_debian_release_description "$DEBIAN_RELEASE"))"
|
||||
echo "OSTree Branch: $OSTREE_BRANCH"
|
||||
echo "Use apt-cacher: $USE_APT_CACHER"
|
||||
echo "Enable SSH: $ENABLE_SSH"
|
||||
echo "Verify Image: $VERIFY_IMAGE"
|
||||
echo "Log Level: $LOG_LEVEL"
|
||||
echo "=========================================="
|
||||
}
|
||||
|
||||
# Validate Debian release
|
||||
validate_debian_release() {
|
||||
local release="$1"
|
||||
for valid_release in $DEBIAN_RELEASES; do
|
||||
if [ "$release" = "$valid_release" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# Get Debian release description
|
||||
get_debian_release_description() {
|
||||
local release="$1"
|
||||
echo "$DEBIAN_RELEASE_DESCRIPTIONS" | tr ' ' '\n' | grep "^$release=" | cut -d'=' -f2
|
||||
}
|
||||
|
||||
# Validate configuration
|
||||
validate_config() {
|
||||
local errors=()
|
||||
|
||||
# Check required values
|
||||
if [ -z "$CONTAINER_IMAGE" ]; then
|
||||
errors+=("CONTAINER_IMAGE is required")
|
||||
fi
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
errors+=("OUTPUT_DIR is required")
|
||||
fi
|
||||
|
||||
if [ -z "$IMAGE_SIZE_GB" ] || ! [[ "$IMAGE_SIZE_GB" =~ ^[0-9]+$ ]]; then
|
||||
errors+=("IMAGE_SIZE_GB must be a positive integer")
|
||||
fi
|
||||
|
||||
if [ -z "$BUILD_TYPE" ] || ! [[ "$BUILD_TYPE" =~ ^(container|chroot)$ ]]; then
|
||||
errors+=("BUILD_TYPE must be 'container' or 'chroot'")
|
||||
fi
|
||||
|
||||
if [ -z "$BOOTLOADER_TYPE" ] || ! [[ "$BOOTLOADER_TYPE" =~ ^(grub|systemd-boot)$ ]]; then
|
||||
errors+=("BOOTLOADER_TYPE must be 'grub' or 'systemd-boot'")
|
||||
fi
|
||||
|
||||
if [ -z "$TARGET_ARCH" ]; then
|
||||
errors+=("TARGET_ARCH is required")
|
||||
fi
|
||||
|
||||
# Validate Debian release
|
||||
if [ -z "$DEBIAN_RELEASE" ]; then
|
||||
errors+=("DEBIAN_RELEASE is required")
|
||||
elif ! validate_debian_release "$DEBIAN_RELEASE"; then
|
||||
errors+=("DEBIAN_RELEASE must be one of: $DEBIAN_RELEASES")
|
||||
fi
|
||||
|
||||
# Report errors
|
||||
if [ ${#errors[@]} -gt 0 ]; then
|
||||
echo "Configuration validation failed:" >&2
|
||||
for error in "${errors[@]}"; do
|
||||
echo " - $error" >&2
|
||||
done
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue