104 lines
3.5 KiB
Makefile
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
|