diff --git a/.cspell/custom-dictionary-workspace.txt b/.cspell/custom-dictionary-workspace.txt index 92bb2dd..452fd36 100644 --- a/.cspell/custom-dictionary-workspace.txt +++ b/.cspell/custom-dictionary-workspace.txt @@ -4,6 +4,7 @@ Bootloading certificaterequests certmanager containo +controlplane coredns crds dnsmasq @@ -21,6 +22,7 @@ KUBECONFIG kubernetescrd kustomization letsencrypt +machineconfig metallb NEXTCLOUD nftables @@ -37,6 +39,8 @@ pgvector rcode restic SAMEORIGIN +talosctl +TALOSCTL traefik USEPATH vxlan diff --git a/bin/wild-setup b/bin/wild-setup index 7c84fb8..c0c8092 100755 --- a/bin/wild-setup +++ b/bin/wild-setup @@ -39,7 +39,7 @@ while [[ $# -gt 0 ]]; do echo "You can also run these components individually:" echo " - wild-setup-scaffold [--update]" echo " - wild-setup-cluster [--skip-installer] [--skip-hardware] [--skip-configs]" - echo " - wild-setup-services [--skip-install]" + echo " - wild-setup-services [--fetch] [--no-deploy]" echo "" echo "For detailed options for each component, use:" echo " wild-setup-scaffold --help" diff --git a/bin/wild-setup-services b/bin/wild-setup-services index 7e1775e..432e554 100755 --- a/bin/wild-setup-services +++ b/bin/wild-setup-services @@ -5,27 +5,34 @@ set -o pipefail # Parse arguments -SKIP_INSTALL=false +FETCH=false +NO_DEPLOY=false while [[ $# -gt 0 ]]; do case $1 in - --skip-install) - SKIP_INSTALL=true + --fetch) + FETCH=true + shift + ;; + --no-deploy|--skip-install) + NO_DEPLOY=true shift ;; -h|--help) echo "Usage: $0 [options]" echo "" - echo "Install Kubernetes cluster services (Phase 4)." + echo "Set up all Kubernetes cluster services (Phase 4)." echo "" echo "Options:" - echo " --skip-install Generate service configs but skip installation" + echo " --fetch Fetch fresh templates for all services before setup" + echo " --no-deploy Configure all services but skip deployment" + echo " --skip-install Alias for --no-deploy (deprecated)" echo " -h, --help Show this help message" echo "" echo "This script will:" - echo " - Generate cluster service configurations" - echo " - Install core services (MetalLB, Traefik, cert-manager, etc.)" - echo " - Each service will prompt for its required configuration" + echo " - Set up core services in dependency order (MetalLB, Traefik, cert-manager, etc.)" + echo " - Each service validates its prerequisites before deployment" + echo " - Fail-fast with clear recovery instructions on errors" echo "" echo "Prerequisites:" echo " - Run 'wild-setup-cluster' to set up cluster infrastructure" @@ -83,12 +90,21 @@ SERVICES_TO_INSTALL=( INSTALLED_COUNT=0 FAILED_COUNT=0 -if [ "${SKIP_INSTALL}" = false ]; then +# Build service setup command flags +SERVICE_FLAGS="" +if [ "$FETCH" = true ]; then + SERVICE_FLAGS="$SERVICE_FLAGS --fetch" +fi +if [ "$NO_DEPLOY" = true ]; then + SERVICE_FLAGS="$SERVICE_FLAGS --no-deploy" +fi + +if [ "$NO_DEPLOY" = false ]; then for service in "${SERVICES_TO_INSTALL[@]}"; do echo "" print_header "Setting up service: $service" - if wild-service-setup "$service" --fetch; then + if wild-service-setup "$service" $SERVICE_FLAGS; then print_success "$service setup completed" INSTALLED_COUNT=$((INSTALLED_COUNT + 1)) else @@ -104,16 +120,34 @@ if [ "${SKIP_INSTALL}" = false ]; then print_success "All $INSTALLED_COUNT services set up successfully!" else print_error "Service setup stopped after $service failure" - print_info "Fix the issue and resume with: wild-service-setup $service --fetch" + print_info "Fix the issue and resume with: wild-service-setup $service $SERVICE_FLAGS" print_info "Then continue with remaining services or re-run wild-setup-services" exit 1 fi else - print_info "Skipping cluster services installation (--skip-install specified)" - print_info "You can install them later with:" + print_info "Skipping cluster services deployment (--no-deploy specified)" + print_info "Services will be configured but not deployed to cluster." for service in "${SERVICES_TO_INSTALL[@]}"; do - print_info " wild-service-setup $service --fetch" + echo "" + print_header "Configuring service: $service" + + if wild-service-setup "$service" $SERVICE_FLAGS; then + print_success "$service configuration completed" + INSTALLED_COUNT=$((INSTALLED_COUNT + 1)) + else + print_error "$service configuration failed" + FAILED_COUNT=$((FAILED_COUNT + 1)) + break + fi done + + if [ $FAILED_COUNT -eq 0 ]; then + print_success "All $INSTALLED_COUNT services configured successfully!" + print_info "To deploy them later, run: wild-setup-services" + else + print_error "Service configuration stopped after $service failure" + exit 1 + fi fi # Summary output diff --git a/docs/agent-context/wildcloud/bin-scripts.md b/docs/agent-context/wildcloud/bin-scripts.md index 669f0bf..3c3cc9b 100644 --- a/docs/agent-context/wildcloud/bin-scripts.md +++ b/docs/agent-context/wildcloud/bin-scripts.md @@ -91,7 +91,7 @@ Wild Cloud provides 34+ command-line tools (all prefixed with `wild-`) for manag **`wild-setup-services`** - Install cluster services (Phase 4) - Manages MetalLB, Traefik, cert-manager, etc. -- Options: `--skip-install` for config generation only +- Options: `--fetch` for fresh templates, `--no-deploy` for config-only - **Usage**: `wild-setup-services [options]` - **Requires**: Working Kubernetes cluster diff --git a/docs/agent-context/wildcloud/setup-process.md b/docs/agent-context/wildcloud/setup-process.md index 9434696..978e960 100644 --- a/docs/agent-context/wildcloud/setup-process.md +++ b/docs/agent-context/wildcloud/setup-process.md @@ -131,7 +131,9 @@ Interactive process for each node: ## Phase 4: Cluster Services Installation ### Services Deployment Process -**Command**: `wild-setup-services` +**Command**: `wild-setup-services [options]` +- **`--fetch`**: Fetch fresh templates before setup +- **`--no-deploy`**: Configure only, skip deployment **New Architecture**: Per-service atomic operations - Uses `wild-service-setup ` for each service in dependency order diff --git a/setup/cluster-services/README.md b/setup/cluster-services/README.md index e40b44e..0333df3 100644 --- a/setup/cluster-services/README.md +++ b/setup/cluster-services/README.md @@ -49,7 +49,13 @@ Internet → External DNS → MetalLB LoadBalancer → Traefik → Kubernetes Se ### Complete Infrastructure Setup ```bash # All services with fresh templates (recommended for first-time setup) +wild-setup-services --fetch + +# All services using existing templates (fastest) wild-setup-services + +# Configure all services but don't deploy (for planning) +wild-setup-services --no-deploy ``` ### Individual Service Management