-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
71 lines (56 loc) · 2.49 KB
/
Copy pathMakefile
File metadata and controls
71 lines (56 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
VENV := $(ROOT)/.venv
PYTHON := python3
PIP := $(VENV)/bin/pip
ANSIBLE := $(VENV)/bin/ansible
PLAYBOOK := $(VENV)/bin/ansible-playbook
export ANSIBLE_CONFIG := $(ROOT)/ansible.cfg
export ANSIBLE_ROLES_PATH := $(ROOT)/roles
export ANSIBLE_INVENTORY = $(shell if test -f "$(ROOT)/inventory/local.ini"; then echo "$(ROOT)/inventory/local.ini"; else echo "$(ROOT)/inventory/hosts.ini"; fi)
ANSIBLE_EXTRA = $(shell if test -f "$(ROOT)/.env.yml"; then printf '%s' '-e @$(ROOT)/.env.yml'; fi)
.PHONY: help install setup ping deploy docker devops middleware check version clean env-yml
help:
@echo "Targets:"
@echo " make setup - interactive local .env (components, secrets, CA)"
@echo " make install - create .venv and install ansible-core"
@echo " make ping - ansible ping to docker hosts"
@echo " make check - ansible-playbook --syntax-check"
@echo " make docker - install Docker CE + Compose plugin"
@echo " make devops - runner/MCP/Maven/Debian/registry/Portainer (+ optional Gitea) + TLS"
@echo " make middleware - portal + RabbitMQ/Redis/PG/Mongo/ES"
@echo " make deploy - full site: docker + devops + middleware"
@echo " make version - show ansible version"
@echo " make clean - remove .venv"
$(VENV)/bin/activate:
$(PYTHON) -m venv $(VENV)
$(PIP) install -U pip
$(PIP) install -r $(ROOT)/requirements.txt
install: $(VENV)/bin/activate
$(PIP) install -r $(ROOT)/requirements.txt
@echo "venv ready: $(VENV)"
@$(ANSIBLE) --version | head -n 1
setup:
$(PYTHON) $(ROOT)/scripts/setup.py
env-yml:
@if [ -f "$(ROOT)/.env" ]; then \
$(PYTHON) $(ROOT)/scripts/env_to_yml.py; \
fi
ping: install env-yml
$(ANSIBLE) $(ANSIBLE_EXTRA) -m ping docker
check: install env-yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) --syntax-check playbooks/site.yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) --syntax-check playbooks/docker.yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) --syntax-check playbooks/devops.yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) --syntax-check playbooks/middleware.yml
docker: install env-yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) playbooks/docker.yml
devops: install env-yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) playbooks/devops.yml
middleware: install env-yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) playbooks/middleware.yml
deploy: install env-yml
$(PLAYBOOK) $(ANSIBLE_EXTRA) playbooks/site.yml
version: install
$(ANSIBLE) --version
clean:
rm -rf $(VENV)