Files
external-minecraft/Makefile
2026-09-02 14:47:08 -06:00

104 lines
3.5 KiB
Makefile

# =============================================================================
# Minecraft Podman Deployment - Makefile
# =============================================================================
# Usage:
# make install # Install dependencies
# make deploy # Deploy Minecraft server
# make check # Dry-run (check mode)
# make debug # Verbose output
# make status # Check server status
# make backup # Run manual backup
# make restore # Restore from latest backup
# make logs # View server logs
# make stop # Stop Minecraft server
# make start # Start Minecraft server
# make restart # Restart Minecraft server
# make update # Update Minecraft to latest version
# make uninstall # Remove Minecraft deployment (dangerous!)
# =============================================================================
PLAYBOOK := site.yml
LIMIT ?= external-apps
INVENTORY := inventory/hosts
.PHONY: help install deploy check debug status backup restore logs stop start restart update uninstall
help:
@echo "Minecraft Podman Deployment Makefile"
@echo ""
@echo "Usage: make [target]"
@echo ""
@echo "Targets:"
@echo " install Install Ansible collections and dependencies"
@echo " deploy Deploy Minecraft server (default: $(LIMIT))"
@echo " check Dry-run deployment (--check mode)"
@echo " debug Deploy with verbose output"
@echo " status Check server status on remote"
@echo " backup Run manual backup on remote"
@echo " restore Restore from latest backup on remote"
@echo " logs View Minecraft server logs"
@echo " stop Stop Minecraft server"
@echo " start Start Minecraft server"
@echo " restart Restart Minecraft server"
@echo " update Update Minecraft to latest version"
@echo " uninstall Remove Minecraft deployment (DANGEROUS)"
@echo ""
@echo "Override target host: make deploy LIMIT=my-server"
install:
@echo "Installing Ansible collections..."
ansible-galaxy collection install -r requirements.yml
deploy:
@echo "Deploying Minecraft to $(LIMIT)..."
ansible-playbook $(PLAYBOOK) --limit $(LIMIT)
check:
@echo "Dry-run deployment for $(LIMIT)..."
ansible-playbook $(PLAYBOOK) --limit $(LIMIT) --check
debug:
@echo "Deploying with debug output for $(LIMIT)..."
ansible-playbook $(PLAYBOOK) --limit $(LIMIT) -vvv
status:
@echo "Checking server status on $(LIMIT)..."
ansible $(LIMIT) -m shell -a 'systemctl status minecraft --no-pager'
backup:
@echo "Running backup on $(LIMIT)..."
ansible $(LIMIT) -m shell -a '/opt/minecraft/backup.sh'
restore:
@echo "Running restore on $(LIMIT)..."
ansible $(LIMIT) -m shell -a '/opt/minecraft/restore.sh'
logs:
@echo "Viewing logs for $(LIMIT)..."
ansible $(LIMIT) -m shell -a 'journalctl -u minecraft -n 100 --no-pager'
stop:
@echo "Stopping Minecraft server on $(LIMIT)..."
ansible $(LIMIT) -m systemd -a 'name=minecraft state=stopped'
start:
@echo "Starting Minecraft server on $(LIMIT)..."
ansible $(LIMIT) -m systemd -a 'name=minecraft state=started'
restart:
@echo "Restarting Minecraft server on $(LIMIT)..."
ansible $(LIMIT) -m systemd -a 'name=minecraft state=restarted'
update:
@echo "Updating Minecraft on $(LIMIT)..."
ansible-playbook $(PLAYBOOK) --limit $(LIMIT) --tags update
uninstall:
@echo "WARNING: This will remove the Minecraft deployment from $(LIMIT)"
@read -p "Are you sure? Type 'yes' to continue: " CONFIRM; \
if [ "$$CONFIRM" = "yes" ]; then \
ansible-playbook $(PLAYBOOK) --limit $(LIMIT) --tags uninstall; \
else \
echo "Aborted."; \
fi