Ctrl K
ComunidadGuías…

Makefile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
SHELL=/bin/bash
.PHONY: playbooks/*.yml playbooks/roles/**/tests/*.yml install update

inventory_opt = -i inventory/carnivuth.org.yml
ifdef inventory
inventory_opt = -i $(inventory)
endif

ifdef user
user_opt = -u $(user)
endif

ifdef key
key_opt = --private-key $(key)
endif

ansible.cfg:
	echo -e '[defaults]\nstdout_callback = telegram\ncallback_whitelist = telegram' > $@

.git/hooks/post-merge:
	echo -e '#!/bin/bash\nmake update' > $@
	chmod +x "$@"

.git/hooks/pre-commit:
	echo -e "#!/bin/bash\nmake roles_toc.md" > $@
	chmod +x $@

env: requirements.txt
	python -m venv env && source env/bin/activate && pip install -r requirements.txt

~/.ansible/collections/ansible_collections/: requirements.yml env
	source env/bin/activate && ansible-galaxy install -r requirements.yml

/var/spool/cron/crontabs/$(USER):
	(crontab -l 2>/dev/null; crontab -l | grep -q "cd $$(pwd) && git pull > /dev/null 2>&1" || echo "* * * * * cd $$(pwd) && git pull > /dev/null 2>&1") | crontab -

roles_toc.md: playbooks/roles/**/README.md playbooks/roles/**/meta/main.yml
	find playbooks/roles -type f -name README.md | sort -u | parallel 'echo -e "# [$$( basename $$( dirname {} ) )]({})\n\n- author: $$(yq .galaxy_info.author $$( dirname {} )/meta/main.yml)\n\n$$(yq .galaxy_info.description $$( dirname {} )/meta/main.yml)\n"' > $@

inventory/group_vars/all/vault.yml: playbooks inventory
	mkdir -p $$(dirname $@)
	touch  $@
	grep -rho -e 'vault_[a-z_]*' inventory playbooks | sort -u | parallel 'grep -q {} $@ || echo {}:' >> $@

playbooks/roles/align_services/files/%:
	mkdir -p '$@'
	touch '$@/docker-compose.yml'
	echo -e "PUID_$$(echo $@ | awk -F'/' '{print $$5 }'| tr '[:lower:]' '[:upper:]')={{ container_puid }}\nPGID_$$(echo $@ | awk -F'/' '{print $$5 }' | tr '[:lower:]' '[:upper:]')={{ container_pgid }}\nPGID_SERVICES={{ services_pgid }}\nHOST={{ container_host }}" > '$@/env.j2'


playbooks/roles/%/: env ~/.ansible/collections/ansible_collections/
	source env/bin/activate && ansible-galaxy role init $@

playbooks/*.yml playbooks/roles/**/tests/*.yml: env ~/.ansible/collections/ansible_collections/
	source env/bin/activate && ansible-playbook $(inventory_opt) $@ $(user_opt) $(key_opt) $(opts)

install: env ansible.cfg ~/.ansible/collections/ansible_collections/ .git/hooks/post-merge playbooks/site.yml

update: env ansible.cfg ~/.ansible/collections/ansible_collections/ .git/hooks/post-merge
	make playbooks/site.yml opts='--tags=cd'