#!/bin/bash # Dry run test for machine setup # Shows what would be executed without making changes set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TIN_SERVICE_NAME="gazette" TIN_SERVICE_ENVIRONMENT="test" NAS_SERVER="DS412plus" log() { echo "[DRY RUN] $*" } test_service_setup() { # Calculate what would be created local service_uid="11110" # gazette:test local service_user="${TIN_SERVICE_NAME}-${TIN_SERVICE_ENVIRONMENT}" local sheet="${TIN_SHEET:-topsheet}" local nfs_export="/volume1/tinsnip/${sheet}/${TIN_SERVICE_NAME}/${TIN_SERVICE_ENVIRONMENT}" log "Service Setup Dry Run" log "====================" log "Service: $TIN_SERVICE_NAME" log "Environment: $TIN_SERVICE_ENVIRONMENT" log "NAS Server: $NAS_SERVER" log "" log "Would create user: $service_user (UID: $service_uid)" log "Would run: sudo useradd -u $service_uid -s /bin/bash -m $service_user" log "" log "Would install NFS dependencies:" log " sudo apt-get update -qq" log " sudo apt-get install -y nfs-common" log "" log "Would mount NFS:" log " sudo mkdir -p /mnt/docker" log " sudo mount -t nfs ${NAS_SERVER}:${nfs_export} /mnt/docker" log "" log "Would create XDG symlinks:" log " mkdir -p ~/.local/state/${sheet}" log " mkdir -p ~/.local/share/${sheet}" log " mkdir -p ~/.config/${sheet}" log " ln -sfn /mnt/docker/state ~/.local/state/${sheet}/@${TIN_SERVICE_NAME}" log " ln -sfn /mnt/docker/data ~/.local/share/${sheet}/@${TIN_SERVICE_NAME}" log " ln -sfn /mnt/docker/config ~/.config/${sheet}/@${TIN_SERVICE_NAME}" log "" log "Would install rootless Docker for $service_user:" log " sudo -u $service_user curl -fsSL https://get.docker.com/rootless | sh" log " sudo setcap cap_net_bind_service=ep \$(which rootlesskit)" log " sudo -u $service_user systemctl --user enable docker.service" log "" log "Final state would be:" log " User: $service_user (UID: $service_uid)" log " Mount: /mnt/docker -> ${NAS_SERVER}:${nfs_export}" log " Docker: Rootless with privileged ports" log " XDG: ~/.local/{state,share,config}/${sheet}/@${TIN_SERVICE_NAME}" } main() { test_service_setup echo echo "To run actual setup:" echo " $SCRIPT_DIR/setup.sh $TIN_SERVICE_NAME $TIN_SERVICE_ENVIRONMENT $NAS_SERVER" } main "$@"