# AnsibleTemplate - Универсальная система тестирования Ansible ролей # Автор: Сергей Антропов # Сайт: https://devops.org.ru .PHONY: molecule vault git help #################################################################################################### # Работа с пресетами #################################################################################################### # Пресеты preset-list: @./scripts/list-presets.sh preset-use: @./scripts/use-preset.sh $(word 2, $(MAKECMDGOALS)) # Псевдонимы для пресетов preset-minimal: @./scripts/use-preset.sh minimal preset-standard: @./scripts/use-preset.sh standard preset-docker: @./scripts/use-preset.sh docker preset-cluster: @./scripts/use-preset.sh cluster #################################################################################################### # Работа с Molecule Universal #################################################################################################### molecule: @case "$(word 2, $(MAKECMDGOALS))" in \ create) \ clear; \ echo "Создание тестового окружения..."; \ cd molecule/universal && molecule create -s universal;; \ converge) \ clear; \ echo "Запуск плейбуков..."; \ cd molecule/universal && molecule converge -s universal;; \ verify) \ clear; \ echo "Проверка результатов..."; \ cd molecule/universal && molecule verify -s universal;; \ destroy) \ clear; \ echo "Удаление тестового окружения..."; \ cd molecule/universal && molecule destroy -s universal;; \ test) \ clear; \ echo "Полный цикл тестирования..."; \ cd molecule/universal && molecule test -s universal;; \ *) \ clear; \ echo "Доступные команды:"; \ echo " make molecule create - создать окружение"; \ echo " make molecule converge - запустить плейбуки"; \ echo " make molecule verify - проверить результаты"; \ echo " make molecule destroy - удалить окружение"; \ echo " make molecule test - полный цикл тестирования"; \ ;; \ esac #################################################################################################### # Работа с Ansible Vault #################################################################################################### vault: @case "$(word 2, $(MAKECMDGOALS))" in \ show) \ clear; \ echo "Доступные файлы секретов:"; \ ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \ echo ""; \ read -p "Введите имя файла (без .yml): " FILE; \ ansible-vault view --vault-password-file vault/.vault vault/$$FILE.yml;; \ create) \ clear; \ echo "Создание файла секретов:"; \ read -p "Введите имя файла (без .yml): " FILE; \ ansible-vault create --encrypt-vault-id default --vault-password-file vault/.vault vault/$$FILE.yml;; \ edit) \ clear; \ echo "Доступные файлы секретов:"; \ ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \ echo ""; \ read -p "Введите имя файла (без .yml): " FILE; \ ansible-vault edit --vault-password-file vault/.vault vault/$$FILE.yml;; \ delete) \ clear; \ echo "Доступные файлы секретов:"; \ ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \ echo ""; \ read -p "Введите имя файла (без .yml): " FILE; \ rm -f vault/$$FILE.yml;; \ rekey) \ clear; \ echo "Доступные файлы секретов:"; \ ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \ echo ""; \ read -p "Введите имя файла (без .yml): " FILE; \ ansible-vault rekey --vault-password-file vault/.vault vault/$$FILE.yml;; \ decrypt) \ clear; \ echo "Доступные файлы секретов:"; \ ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \ echo ""; \ read -p "Введите имя файла (без .yml): " FILE; \ ansible-vault decrypt --vault-password-file vault/.vault vault/$$FILE.yml;; \ encrypt) \ clear; \ echo "Доступные файлы секретов:"; \ ls -la vault/*.yml 2>/dev/null || echo "Нет зашифрованных файлов"; \ echo ""; \ read -p "Введите имя файла (без .yml): " FILE; \ ansible-vault encrypt --encrypt-vault-id default --vault-password-file vault/.vault vault/$$FILE.yml;; \ *) \ clear; \ echo "Доступные команды:"; \ echo " make vault create - создать файл секретов"; \ echo " make vault edit - редактировать секреты"; \ echo " make vault show - показать секреты"; \ echo " make vault delete - удалить секреты"; \ echo " make vault encrypt - зашифровать файл"; \ echo " make vault decrypt - расшифровать файл"; \ echo " make vault rekey - сменить пароль";; \ esac #################################################################################################### # Работа с Git #################################################################################################### git: @case "$(word 2, $(MAKECMDGOALS))" in \ push) \ git branch; \ read -p "Выберите ветку для пуша: " BRANCH; \ read -p "Введите описание коммита: " COMMIT; \ commitname=$$COMMIT; \ git add . ; \ git commit -m "$$commitname"; \ git push -u origin $$BRANCH; \ echo "Изменения внесены в Git";; \ pull) \ git pull;; \ new) \ read -p "Введите имя новой ветки: " BRANCH_NAME; \ NEW_BRANCH="$$BRANCH_NAME"; \ git checkout -b $$NEW_BRANCH; \ echo "Создана и переключена на новую ветку: $$NEW_BRANCH";; \ *) \ clear; \ echo "Доступные команды:"; \ echo " make git push - запушить изменения"; \ echo " make git pull - получить изменения"; \ echo " make git new - создать новую ветку";; \ esac #################################################################################################### # Справка #################################################################################################### help: @clear @echo "==========================================" @echo "AnsibleTemplate - Универсальная система" @echo "тестирования Ansible ролей" @echo "==========================================" @echo "" @echo "📁 Структура проекта:" @echo " scripts/ - Скрипты автоматизации" @echo " inventory/ - Инвентори файлы" @echo " molecule/universal/ - Molecule конфигурация" @echo " roles/ - Ansible роли" @echo " vars/ - Переменные" @echo "" @echo "🚀 Основные команды:" @echo " make molecule create - создать тестовое окружение" @echo " make molecule test - полный цикл тестирования" @echo " make molecule generateinventory - сгенерировать инвентори" @echo " make vault create - создать файл секретов" @echo " make git new - создать новую ветку" @echo "" @echo "📖 Для подробной справки:" @echo " make molecule - команды Molecule" @echo " make vault - команды Vault" @echo " make git - команды Git" @echo "==========================================" # Пустые цели для совместимости view create edit show delete test lint deploy new advanced: @true