56 lines
1.3 KiB
Makefile
56 lines
1.3 KiB
Makefile
# Ansible options
|
|
ansible_user ?= ephase
|
|
ansible_roles := deps
|
|
ansible_options ?= --diff
|
|
ansible_playbook ?= playbook.yml
|
|
ansible_req ?= requirements.yml
|
|
# venv options
|
|
venv_source ?= .venv
|
|
venv_cmd := . $(venv_source)/bin/activate
|
|
|
|
#Python
|
|
python_bin ?= python
|
|
pip_req ?= requirements.txt
|
|
|
|
.PHONY: inventory
|
|
inventory:
|
|
ansible-inventory --graph -i inventory.ini
|
|
|
|
deps: $(ansible_req) $(venv_source)/dep
|
|
$(shell mkdir -p $(ansible_roles))
|
|
ifeq ($(wildcard $(ansible_req)),)
|
|
$(error there is not requirements.yml file in $(ansible_data)!)
|
|
endif
|
|
$(venv_cmd) && ansible-galaxy install \
|
|
--ignore-errors \
|
|
--roles-path="$(ansible_roles)" \
|
|
--role-file="$(ansible_req)"
|
|
|
|
.PHONY: check-syntax
|
|
check-syntax: deps
|
|
$(venv_cmd) && ansible-playbook -i inventory.ini \
|
|
--syntax-check $(ansible_playbook)
|
|
|
|
.PHONY: dry-run
|
|
dry-run: deps
|
|
$(venv_cmd) && ansible-playbook -i inventory.ini \
|
|
--check $(ansible_options) $(ansible_playbook) \
|
|
-u $(ansible_user)
|
|
|
|
.PHONY: run
|
|
run: deps
|
|
$(venv_cmd) && ansible-playbook -i inventory.ini \
|
|
$(ansible_options) $(ansible_playbook) \
|
|
-u $(ansible_user)
|
|
|
|
# venv management
|
|
$(venv_source):
|
|
$(python_bin) -m venv $(venv_source)
|
|
|
|
$(venv_source)/dep: $(venv_source) $(pip_req)
|
|
touch $(venv_source)/dep
|
|
$(venv_cmd) && pip install -r $(pip_req)
|
|
|
|
.PHONY: clean-venv
|
|
clean-venv:
|
|
[ -d $(venv_source) ] && rm -rf $(venv_source)
|