124 lines
4.2 KiB
Makefile
124 lines
4.2 KiB
Makefile
.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 |