diff options
| author | Kumar Damani <me@kumardamani.net> | 2022-03-26 19:06:27 +0000 |
|---|---|---|
| committer | Kumar Damani <me@kumardamani.net> | 2022-03-27 22:46:34 +0000 |
| commit | 5eb38b5b4fc0d4187091b14bd740baee72a6002f (patch) | |
| tree | 5033704e7dd7c63ae795fdf17d886e7f6deba0af /Makefile | |
| parent | eaf70c4f806b9eeb4c4b272176157701dc1cc2b3 (diff) | |
simplified install process
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ebb1574 --- /dev/null +++ b/Makefile @@ -0,0 +1,82 @@ +# ANSIBLE-MAKEFILE + +SHELL:=/bin/bash + +## +# VARIABLES +## +playbook ?= setup +roles_path ?= "roles/" +env_path ?= "inventories/" +group ?= all +venv_path := "${HOME}/.venv/vps/" + +mkfile_dir ?= $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) +ifeq ("$(wildcard $(mkfile_dir)/vaultid)", "") + opts ?= $(args) +else # Handle vault password if any + opts ?= $(args) --vault-password-file=$(mkfile_dir)/vaultid +endif + +ifneq ("$(limit)", "") + opts := $(opts) --limit="$(limit)" +endif + +ifneq ("$(tags)", "") + opts := $(opts) --tags="$(tags)" +endif + +ifneq ("$(skip)", "") + opts := $(opts) --skip-tags="$(skip)" +endif + +## +# TASKS +## +.PHONY: install +install: ## make install # Install ansible, ansible-lint, and required collections. Reveal vaultid file. + @test -d ${venv_path} || (python3 -m venv ${venv_path} --system-site-packages) + @source ${venv_path}/bin/activate && pip install -r requirements.txt + @source ${venv_path}/bin/activate && ansible-galaxy install -r requirements.yml + @source ${venv_path}/bin/activate && ansible-galaxy collection install --ignore-errors -r requirements.yml + @[ -f "vaultid" ] && source ${venv_path}/bin/activate && ansible-vault decrypt --vault-id vaultid --output hosts hosts.vault || echo "Nothing to decrypt with. Bye." + +.PHONY: lint +lint: mandatory-file-param ## make lint file=playbooks/template_playbook.yaml # Run ansible-lint on a playbook or tasks file. + @[ -f "$(file)" ] && ANSIBLE_VAULT_PASSWORD_FILE=vaultid ansible-lint -c ansible-lint.yaml "$(file)" + +.PHONY: syntax +syntax: mandatory-file-param ## make syntax file=playbooks/template_playbook.yaml [args=<ansible-playbook arguments>] # Check syntax of a playbook. + @[ -f "$(file)" ] && ansible-playbook --inventory-file="hosts" --syntax-check $(opts) "$(file)" + +.PHONY: dry-run +dry-run: mandatory-file-param ## make dry-run file=playbooks/template_playbook.yaml [tags=<ansible tags>] [limit=<ansible host limit>] [args=<ansible-playbook arguments>] # Run a playbook in dry run mode. + @[ -f "$(file)" ] && source ${venv_path}/bin/activate && ansible-playbook --inventory-file="hosts" --diff --check $(opts) "$(file)" + +.PHONY: run +run: mandatory-file-param ## make run file=playbooks/template_playbook.yaml [tags=<ansible tags>] [limit=<ansible host limit>] [args=<ansible-playbook arguments>] # Run a playbook. + @[ -f "$(file)" ] && source ${venv_path}/bin/activate && ansible-playbook --inventory-file="hosts" --diff $(opts) "$(file)" + +.PHONY: vault-view +vault-view: ## make vault-view [group=all] [args=<ansible-vault arguments>] # View a vaulted file. + @[ -f "group_vars/${group}/vault" ] && source ${venv_path}/bin/activate && ansible-vault view $(opts) "group_vars/${group}/vault" + +.PHONY: vault-edit +vault-edit: ## make vault-edit [group=all] [args=<ansible-vault arguments>] # Edit a vaulted file. + @[ -f "group_vars/${group}/vault" ] && source ${venv_path}/bin/activate && ansible-vault edit $(opts) "group_vars/${group}/vault" + +.PHONY: facts +facts: ## make facts [group=all] [args=<ansible arguments>] # Gather facts from your hosts. + @source ${venv_path}/bin/activate && ansible --module-name="setup" --inventory-file="hosts" $(opts) --tree="out/" $(group) + +.PHONY: mandatory-host-param mandatory-file-param +mandatory-host-param: + @[ ! -z $(host) ] +mandatory-file-param: + @[ ! -z $(file) ] + +.PHONY: help +help: ## make help # Print this help message. + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +.DEFAULT_GOAL := help |
