#!/bin/bash # services/control-plane/deploy-local.sh set -e # 1. Validate it is deploying control-plane if [[ ! $(pwd) == *"/services/control-plane" ]]; then echo "Error: Script must be run from services/control-plane directory" exit 1 fi if [[ ! -f "docker-compose.yml" ]]; then echo "Error: docker-compose.yml not found" exit 1 fi echo "--- Preparing Control Plane Directories ---" # 2. Prepare required dirs # /opt/homelab/config # /opt/homelab/actions/{pending,approved,rejected,running,completed,failed} # /opt/homelab/world # /opt/homelab/state DIRS=( "/opt/homelab/config" "/opt/homelab/actions/pending" "/opt/homelab/actions/approved" "/opt/homelab/actions/rejected" "/opt/homelab/actions/running" "/opt/homelab/actions/completed" "/opt/homelab/actions/failed" "/opt/homelab/world" "/opt/homelab/state" ) for dir in "${DIRS[@]}"; do if [ ! -d "$dir" ]; then echo "Creating $dir" sudo mkdir -p "$dir" fi done # 3. chown/chmod for UID 1000 echo "Setting permissions for UID 1000 on /opt/homelab..." sudo chown -R 1000:1000 /opt/homelab sudo chmod -R 775 /opt/homelab # 4. Run docker compose up -d --build --force-recreate echo "--- Starting Control Plane Services ---" docker compose up -d --build --force-recreate # 5. Print docker ps for control-plane containers echo "--- Deployment Status ---" docker ps --filter "name=control-plane"