.PHONY: help deploy deploy-gateway deploy-fileserver deploy-k8s-server install-gateway install-fileserver install-k8s-server fetch-hwconfig-gateway fetch-hwconfig-fileserver fetch-hwconfig-k8s-server upgrade-containers all # Hosts GATEWAY_HOST := danlin@10.202.82.3 FILESERVER_HOST := danlin@10.202.82.6 K8S_HOST := danlin@10.202.82.7 # Default target all: deploy help: @echo "NixOS Infrastructure Management" @echo "" @echo "Targets:" @echo " make deploy Deploy to gateway and fileserver" @echo " make deploy-gateway Deploy to gateway only" @echo " make deploy-fileserver Deploy to fileserver only" @echo " make deploy-k8s-server Deploy to k8s-server only" @echo " make upgrade-containers Pull latest images and restart containers on fileserver" @echo " make install-gateway Run installation script for gateway" @echo " make install-fileserver Run installation script for fileserver" @echo " make install-k8s-server Run installation script for k8s-server" @echo " make fetch-hwconfig-gateway Fetch hardware config from gateway" @echo " make fetch-hwconfig-fileserver Fetch hardware config from fileserver" @echo " make fetch-hwconfig-k8s-server Fetch hardware config from k8s-server" @echo "" # Deployment targets deploy: deploy-gateway deploy-fileserver deploy-k8s-server: @echo "======================================" @echo "Deploying k8s-server..." @echo "======================================" @echo "Syncing files to k8s-server..." rsync -av --delete --exclude '.git' ./ $(K8S_HOST):/tmp/infra-nix/ @echo "Building and switching on k8s-server..." ssh -tt $(K8S_HOST) "cd /tmp/infra-nix && sudo nixos-rebuild switch --flake '.#k8s-server'" @echo "✓ k8s-server deployed successfully" @echo "" deploy-gateway: @echo "======================================" @echo "Deploying gateway..." @echo "======================================" @echo "Syncing files to gateway..." rsync -av --delete --exclude '.git' ./ $(GATEWAY_HOST):/tmp/infra-nix/ @echo "Building and switching on gateway..." ssh -tt $(GATEWAY_HOST) "cd /tmp/infra-nix && sudo nixos-rebuild switch --flake '.#gateway'" @echo "✓ Gateway deployed successfully" @echo "" deploy-fileserver: @echo "======================================" @echo "Deploying fileserver..." @echo "======================================" @echo "Syncing files to fileserver..." rsync -av --delete --exclude '.git' --exclude 'src/dj-beets/poetry.lock' ./ $(FILESERVER_HOST):/tmp/infra-nix/ @echo "Copying dj-beets project to /opt/dj-beets..." ssh $(FILESERVER_HOST) "sudo mkdir -p /opt/dj-beets" rsync -av --delete src/dj-beets/ $(FILESERVER_HOST):/tmp/dj-beets-tmp/ ssh $(FILESERVER_HOST) "sudo rsync -a --delete /tmp/dj-beets-tmp/ /opt/dj-beets/ && sudo rm -rf /tmp/dj-beets-tmp" @echo "Building and switching on fileserver..." ssh -tt $(FILESERVER_HOST) "cd /tmp/infra-nix && sudo nixos-rebuild switch --flake '.#fileserver'" @echo "✓ Fileserver deployed successfully" @echo "" # Upgrade containers (pull latest images + restart) upgrade-containers: @echo "======================================" @echo "Upgrading containers on fileserver..." @echo "======================================" @echo "Pulling latest images..." ssh $(FILESERVER_HOST) "sudo podman images --format '{{.Repository}}:{{.Tag}}' | grep -v localhost | xargs -I{} sudo podman pull {}" @echo "Restarting containers..." ssh $(FILESERVER_HOST) "sudo systemctl restart podman-filebrowser podman-gitea" @echo "✓ Containers upgraded successfully" @echo "" # Installation targets install-gateway: @echo "======================================" @echo "Installing gateway..." @echo "======================================" @read -p "Enter gateway IP address: " IP; \ if [ -z "$$IP" ]; then \ echo "Error: IP address required"; \ exit 1; \ fi; \ echo "Copying install script to $$IP..."; \ scp install/install-gateway.sh root@$$IP:/tmp/; \ echo "Connecting to $$IP..."; \ ssh root@$$IP "bash /tmp/install-gateway.sh"; \ echo ""; \ echo "Fetching hardware config from $$IP..."; \ scp root@$$IP:/mnt/etc/nixos/hardware-configuration.nix hosts/gateway/hardware-configuration.nix; \ echo "✓ Hardware config saved to hosts/gateway/hardware-configuration.nix"; \ echo "✓ Update hosts/gateway/configuration.nix with the correct IP if needed" @echo "" install-fileserver: @echo "======================================" @echo "Installing fileserver..." @echo "======================================" @read -p "Enter fileserver IP address: " IP; \ if [ -z "$$IP" ]; then \ echo "Error: IP address required"; \ exit 1; \ fi; \ echo "Copying install script to $$IP..."; \ scp install/install-fileserver.sh root@$$IP:/tmp/; \ echo "Connecting to $$IP..."; \ ssh root@$$IP "bash /tmp/install-fileserver.sh"; \ echo ""; \ echo "Fetching hardware config from $$IP..."; \ scp root@$$IP:/mnt/etc/nixos/hardware-configuration.nix hosts/fileserver/hardware-configuration.nix; \ echo "✓ Hardware config saved to hosts/fileserver/hardware-configuration.nix"; \ echo "✓ Update hosts/fileserver/configuration.nix with the correct IP if needed" @echo "" install-k8s-server: @echo "======================================" @echo "Installing k8s-server..." @echo "======================================" @read -p "Enter k8s-server IP address: " IP; \ if [ -z "$$IP" ]; then \ echo "Error: IP address required"; \ exit 1; \ fi; \ echo "Copying install script to $$IP..."; \ scp install/install-k8s-server.sh root@$$IP:/tmp/; \ echo "Connecting to $$IP..."; \ ssh root@$$IP "bash /tmp/install-k8s-server.sh"; \ echo ""; \ echo "Fetching hardware config from $$IP..."; \ scp root@$$IP:/mnt/etc/nixos/hardware-configuration.nix hosts/k8s-server/hardware-configuration.nix; \ echo "✓ Hardware config saved to hosts/k8s-server/hardware-configuration.nix"; \ scp root@$$IP:/mnt/etc/nixos/configuration.nix hosts/k8s-server/configuration.installer.nix; \ echo "✓ Installer config saved to hosts/k8s-server/configuration.installer.nix"; \ echo "✓ Update hosts/k8s-server/configuration.nix with the correct IP if needed" @echo "" # Fetch hardware configuration targets fetch-hwconfig-gateway: @echo "======================================" @echo "Fetching hardware config from gateway..." @echo "======================================" scp $(GATEWAY_HOST):/etc/nixos/hardware-configuration.nix hosts/gateway/ @echo "✓ Hardware config saved to hosts/gateway/hardware-configuration.nix" @echo "" fetch-hwconfig-fileserver: @echo "======================================" @echo "Fetching hardware config from fileserver..." @echo "======================================" scp $(FILESERVER_HOST):/etc/nixos/hardware-configuration.nix hosts/fileserver/ @echo "✓ Hardware config saved to hosts/fileserver/hardware-configuration.nix" @echo "" fetch-hwconfig-k8s-server: @echo "======================================" @echo "Fetching hardware config from k8s-server..." @echo "======================================" scp $(K8S_HOST):/etc/nixos/hardware-configuration.nix hosts/k8s-server/ @echo "✓ Hardware config saved to hosts/k8s-server/hardware-configuration.nix" @echo ""