.PHONY: help bootstrap lint test check apply dev local clean status .DEFAULT_GOAL := help ## Colors for output BOLD := \033[1m RED := \033[31m GREEN := \033[32m YELLOW := \033[33m BLUE := \033[34m RESET := \033[0m help: ## Show this help message @echo "$(BOLD)Ansible Development Environment$(RESET)" @echo "" @echo "$(BOLD)Available commands:$(RESET)" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(BLUE)%-15s$(RESET) %s\n", $$1, $$2}' @echo "" @echo "$(BOLD)Examples:$(RESET)" @echo " make bootstrap # Set up dependencies" @echo " make check # Dry run all hosts" @echo " make apply # Run on all dev hosts" @echo " make dev HOST=devVM # Run on specific host" @echo " make local # Run local playbook" @echo "" bootstrap: ## Install required collections and dependencies @echo "$(YELLOW)Installing Ansible collections...$(RESET)" ansible-galaxy collection install -r collections/requirements.yml @echo "$(GREEN)✓ Collections installed$(RESET)" lint: ## Run ansible-lint on all playbooks and roles @echo "$(YELLOW)Running ansible-lint...$(RESET)" ansible-lint @echo "$(GREEN)✓ Linting completed$(RESET)" test: lint ## Run all tests (lint + syntax check) @echo "$(YELLOW)Testing playbook syntax...$(RESET)" ansible-playbook dev-playbook.yml --syntax-check ansible-playbook local-playbook.yml --syntax-check @echo "$(GREEN)✓ Syntax check passed$(RESET)" check: ## Dry-run the development playbook (--check mode) @echo "$(YELLOW)Running dry-run on development hosts...$(RESET)" ansible-playbook dev-playbook.yml --check --diff check-local: ## Dry-run the local playbook @echo "$(YELLOW)Running dry-run on localhost...$(RESET)" ansible-playbook local-playbook.yml --check --diff -K apply: ## Run the development playbook on all dev hosts @echo "$(YELLOW)Applying development playbook...$(RESET)" ansible-playbook dev-playbook.yml local: ## Run the local playbook on localhost @echo "$(YELLOW)Applying local playbook...$(RESET)" ansible-playbook local-playbook.yml -K # Host-specific targets dev: ## Run on specific host (usage: make dev HOST=devVM) ifndef HOST @echo "$(RED)Error: HOST parameter required$(RESET)" @echo "Usage: make dev HOST=devVM" @exit 1 endif @echo "$(YELLOW)Running on host: $(HOST)$(RESET)" ansible-playbook dev-playbook.yml --limit $(HOST) # Tag-based execution security: ## Run only security-related roles @echo "$(YELLOW)Running security roles...$(RESET)" ansible-playbook dev-playbook.yml --tags security maintenance: ## Run only maintenance tasks @echo "$(YELLOW)Running maintenance...$(RESET)" ansible-playbook dev-playbook.yml --tags maintenance docker: ## Install/configure Docker only @echo "$(YELLOW)Running Docker setup...$(RESET)" ansible-playbook dev-playbook.yml --tags docker shell: ## Configure shell only @echo "$(YELLOW)Running shell configuration...$(RESET)" ansible-playbook dev-playbook.yml --tags shell apps: ## Install applications only @echo "$(YELLOW)Installing applications...$(RESET)" ansible-playbook dev-playbook.yml --tags apps # Utility targets status: ## Check connectivity to all hosts @echo "$(YELLOW)Checking host connectivity...$(RESET)" ansible all -m ping facts: ## Gather facts from all hosts @echo "$(YELLOW)Gathering facts...$(RESET)" ansible all -m setup --tree /tmp/facts clean: ## Clean up ansible artifacts @echo "$(YELLOW)Cleaning up artifacts...$(RESET)" rm -rf .ansible/facts/ find . -name "*.retry" -delete @echo "$(GREEN)✓ Cleanup completed$(RESET)" # Debug targets debug: ## Run with debug output enabled @echo "$(YELLOW)Running with debug output...$(RESET)" ansible-playbook dev-playbook.yml -e "ansible_debug_output=true" verbose: ## Run with verbose output @echo "$(YELLOW)Running with verbose output...$(RESET)" ansible-playbook dev-playbook.yml -vv # Quick development workflow quick: test check ## Quick test and check before applying @echo "$(GREEN)✓ Ready to apply changes$(RESET)" # Vault management edit-vault: ## Edit encrypted host vars (usage: make edit-vault HOST=devVM) ifndef HOST @echo "$(RED)Error: HOST parameter required$(RESET)" @echo "Usage: make edit-vault HOST=devVM" @exit 1 endif ansible-vault edit host_vars/$(HOST).yml