feat: add Makefile and README.md for Step-CA Docker stack setup
This commit is contained in:
64
Makefile
Normal file
64
Makefile
Normal file
@@ -0,0 +1,64 @@
|
||||
.PHONY: help configure clean
|
||||
|
||||
# Colors for output
|
||||
BLUE := \033[0;34m
|
||||
GREEN := \033[0;32m
|
||||
YELLOW := \033[0;33m
|
||||
RED := \033[0;31m
|
||||
NC := \033[0m # No Color
|
||||
|
||||
help: ## Show this help message
|
||||
@echo "$(BLUE)Step-CA Docker Stack - Available commands:$(NC)"
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}'
|
||||
|
||||
configure: ## Create secret files from .env if they don't exist
|
||||
@echo "$(BLUE)Configuring secrets...$(NC)"
|
||||
@if [ ! -f .env ]; then \
|
||||
echo "$(RED)Error: .env file not found. Please copy .env.example to .env and configure it.$(NC)"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@mkdir -p secrets
|
||||
@if [ ! -f secrets/postgres_password.txt ]; then \
|
||||
echo "$(YELLOW)Creating secrets/postgres_password.txt$(NC)"; \
|
||||
grep '^POSTGRES_PASSWORD=' .env | cut -d '=' -f2- | tr -d '"' > secrets/postgres_password.txt; \
|
||||
chmod 600 secrets/postgres_password.txt; \
|
||||
echo "$(GREEN)✓ Created secrets/postgres_password.txt$(NC)"; \
|
||||
else \
|
||||
echo "$(GREEN)✓ secrets/postgres_password.txt already exists$(NC)"; \
|
||||
fi
|
||||
@if [ ! -f secrets/step_pwd.txt ]; then \
|
||||
echo "$(YELLOW)Creating secrets/step_pwd.txt$(NC)"; \
|
||||
if grep -q '^STEP_CA_PASSWORD=' .env; then \
|
||||
grep '^STEP_CA_PASSWORD=' .env | cut -d '=' -f2- | tr -d '"' > secrets/step_pwd.txt; \
|
||||
else \
|
||||
openssl rand -base64 32 > secrets/step_pwd.txt; \
|
||||
echo "$(YELLOW)No STEP_CA_PASSWORD in .env, generated random password$(NC)"; \
|
||||
fi; \
|
||||
chmod 600 secrets/step_pwd.txt; \
|
||||
echo "$(GREEN)✓ Created secrets/step_pwd.txt$(NC)"; \
|
||||
else \
|
||||
echo "$(GREEN)✓ secrets/step_pwd.txt already exists$(NC)"; \
|
||||
fi
|
||||
@echo "$(GREEN)✓ Configuration complete$(NC)"
|
||||
|
||||
clean:
|
||||
docker compose down
|
||||
@echo "$(RED)WARNING: This will destroy all data (certificates, database)$(NC)"
|
||||
@read -p "Are you sure? [y/N] " -n 1 -r; \
|
||||
echo; \
|
||||
if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
|
||||
echo "$(BLUE)Removing volumes...$(NC)"; \
|
||||
docker compose down -v; \
|
||||
echo "$(GREEN)✓ Volumes removed$(NC)"; \
|
||||
else \
|
||||
echo "$(YELLOW)Cancelled$(NC)"; \
|
||||
fi
|
||||
|
||||
exec-ca: ## Execute ash in step-ca container
|
||||
docker compose exec step-ca sh
|
||||
|
||||
exec-db: ## Execute psql in postgres container
|
||||
docker compose exec postgres psql -U stepca -d stepca
|
||||
|
||||
fingerprint: ## Get CA root certificate fingerprint
|
||||
@docker compose exec step-ca step certificate fingerprint /home/step/certs/root_ca.crt 2>/dev/null || echo "$(RED)CA not initialized yet$(NC)"
|
||||
Reference in New Issue
Block a user