feat: добавлена роль ping для проверки сетевого подключения
- Создана новая роль ping в roles/ping/ - Роль выполняет ping yandex.ru с 5 пакетами - Добавлены задачи: выполнение ping, вывод результатов, статистика - Добавлена документация (README.md, QUICKSTART.md) - Добавлен пример playbook - Роль интегрирована в deploy.yml - Все файлы прошли проверку ansible-lint Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
1
Makefile
1
Makefile
@@ -50,6 +50,7 @@ role:
|
|||||||
lint) \
|
lint) \
|
||||||
echo "🔍 Проверка синтаксиса ролей ..."; \
|
echo "🔍 Проверка синтаксиса ролей ..."; \
|
||||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace -e ANSIBLE_FORCE_COLOR=1 $(DOCKER_IMAGE) bash -c "ansible-lint roles/ --config-file .ansible-lint || true"; \
|
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace -e ANSIBLE_FORCE_COLOR=1 $(DOCKER_IMAGE) bash -c "ansible-lint roles/ --config-file .ansible-lint || true"; \
|
||||||
|
echo ""; \
|
||||||
echo "✅ Lint завершен";; \
|
echo "✅ Lint завершен";; \
|
||||||
test) \
|
test) \
|
||||||
echo "🚀 Тестирование ролей ..."; \
|
echo "🚀 Тестирование ролей ..."; \
|
||||||
|
|||||||
347
Makefile.backup
347
Makefile.backup
@@ -1,347 +0,0 @@
|
|||||||
# =============================================================================
|
|
||||||
# AnsibleTemplate - Универсальная система тестирования Ansible ролей
|
|
||||||
# Автор: Сергей Антропов
|
|
||||||
# Сайт: https://devops.org.ru
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
SHELL := /bin/bash
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# ЦВЕТА ДЛЯ ВЫВОДА
|
|
||||||
# =============================================================================
|
|
||||||
RED := \033[0;31m
|
|
||||||
GREEN := \033[0;32m
|
|
||||||
YELLOW := \033[0;33m
|
|
||||||
BLUE := \033[0;34m
|
|
||||||
PURPLE := \033[0;35m
|
|
||||||
CYAN := \033[0;36m
|
|
||||||
WHITE := \033[0;37m
|
|
||||||
RESET := \033[0m
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
|
|
||||||
# =============================================================================
|
|
||||||
PROJECT_NAME ?= ansible-template
|
|
||||||
VERSION ?= 0.1.0
|
|
||||||
AUTHOR ?= "Сергей Антропов"
|
|
||||||
SITE ?= "https://devops.org.ru"
|
|
||||||
DOCKER_IMAGE ?= quay.io/ansible/creator-ee:latest
|
|
||||||
CONTAINER_NAME ?= ansible-controller
|
|
||||||
|
|
||||||
.PHONY: role molecule vault git docker help
|
|
||||||
|
|
||||||
####################################################################################################
|
|
||||||
# Работа с ролями
|
|
||||||
####################################################################################################
|
|
||||||
role:
|
|
||||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
|
||||||
lint) \
|
|
||||||
clear; \
|
|
||||||
echo "$(BLUE)🔍 Проверка синтаксиса ролей ...$(RESET)"; \
|
|
||||||
echo ""; \
|
|
||||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace -e ANSIBLE_FORCE_COLOR=1 $(DOCKER_IMAGE) bash -c "ansible-lint roles/ --config-file .ansible-lint || true"; \
|
|
||||||
echo "$(GREEN)✅ Lint завершен$(RESET)";; \
|
|
||||||
test) \
|
|
||||||
clear; \
|
|
||||||
echo "$(PURPLE)🚀 Тестирование ролей ...$(RESET)"; \
|
|
||||||
PRESET="default"; \
|
|
||||||
# Получаем все аргументы после 'test' и берем первый как preset \
|
|
||||||
ARGS="$(filter-out test,$(MAKECMDGOALS))"; \
|
|
||||||
if [ -n "$$ARGS" ]; then \
|
|
||||||
PRESET="$$(echo $$ARGS | cut -d' ' -f1)"; \
|
|
||||||
fi; \
|
|
||||||
echo "$(CYAN)📋 Используется пресет: $(YELLOW)$$PRESET$(RESET)"; \
|
|
||||||
if [ ! -f "molecule/presets/$$PRESET.yml" ]; then \
|
|
||||||
echo "$(RED)❌ Ошибка: Пресет '$$PRESET' не найден!$(RESET)"; \
|
|
||||||
echo "$(YELLOW)💡 Доступные пресеты:$(RESET)"; \
|
|
||||||
ls -1 molecule/presets/*.yml 2>/dev/null | sed 's|molecule/presets/||g' | sed 's|\.yml||g' | sed 's/^/ - /' || echo " $(YELLOW)⚠️ Пресеты не найдены$(RESET)"; \
|
|
||||||
echo ""; \
|
|
||||||
echo "$(GREEN)💡 Использование:$(RESET)"; \
|
|
||||||
echo " $(BLUE)make role test$(RESET) - с default preset"; \
|
|
||||||
echo " $(BLUE)make role test [preset_name]$(RESET) - с любым preset"; \
|
|
||||||
echo " $(BLUE)make role test minimal$(RESET) - с minimal preset"; \
|
|
||||||
echo " $(BLUE)make role test standard$(RESET) - со standard preset"; \
|
|
||||||
echo " $(BLUE)make role test docker$(RESET) - с docker preset"; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
echo ""; \
|
|
||||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
-e ANSIBLE_FORCE_COLOR=1 \
|
|
||||||
-e MOLECULE_PRESET=$$PRESET \
|
|
||||||
$(DOCKER_IMAGE) \
|
|
||||||
bash -c "cd molecule/default && ansible-playbook -i localhost, site.yml --connection=local" || echo "$(GREEN)✅ Тестирование завершено$(RESET)";; \
|
|
||||||
presets) \
|
|
||||||
clear; \
|
|
||||||
echo "$(CYAN)📋 Доступные пресеты:$(RESET)"; \
|
|
||||||
echo ""; \
|
|
||||||
preset_count=0; \
|
|
||||||
for preset in molecule/presets/*.yml; do \
|
|
||||||
if [ -f "$$preset" ]; then \
|
|
||||||
preset_name=$$(basename "$$preset" .yml); \
|
|
||||||
preset_desc=$$(grep -E "^#.*пресет|^#.*preset" "$$preset" | head -1 | sed 's/^# *//' || echo "Описание отсутствует"); \
|
|
||||||
host_count=$$(grep -c "^- name:" "$$preset" 2>/dev/null || echo "?"); \
|
|
||||||
printf " $(BLUE)📄 %s$(RESET) - %s $(GREEN)(%s хостов)$(RESET)\n" "$$preset_name" "$$preset_desc" "$$host_count"; \
|
|
||||||
preset_count=$$((preset_count + 1)); \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
if [ $$preset_count -eq 0 ]; then \
|
|
||||||
echo " $(YELLOW)⚠️ Пресеты не найдены$(RESET)"; \
|
|
||||||
fi; \
|
|
||||||
echo ""; \
|
|
||||||
echo "$(GREEN)💡 Использование:$(RESET)"; \
|
|
||||||
echo " $(BLUE)make role test$(RESET) - с default preset"; \
|
|
||||||
echo " $(BLUE)make role test [preset_name]$(RESET) - с любым preset"; \
|
|
||||||
echo " $(BLUE)make role test minimal$(RESET) - с minimal preset"; \
|
|
||||||
echo " $(BLUE)make role test standard$(RESET) - со standard preset"; \
|
|
||||||
echo " $(BLUE)make role test docker$(RESET) - с docker preset"; \
|
|
||||||
echo ""; \
|
|
||||||
echo "$(YELLOW)💡 Примеры:$(RESET)"; \
|
|
||||||
echo " $(BLUE)make role test$(RESET) # default preset"; \
|
|
||||||
echo " $(BLUE)make role test minimal$(RESET) # minimal preset"; \
|
|
||||||
echo " $(BLUE)make role test my-custom-preset$(RESET) # любой preset";; \
|
|
||||||
deploy) \
|
|
||||||
clear; \
|
|
||||||
echo "$(PURPLE)🚀 Развертывание ролей на реальные серверы...$(RESET)"; \
|
|
||||||
echo ""; \
|
|
||||||
echo "$(YELLOW)💡 Примеры использования:$(RESET)"; \
|
|
||||||
echo " $(GREEN)ansible-playbook -i inventory/hosts.ini deploy.yml$(RESET)"; \
|
|
||||||
echo " $(GREEN)ansible-playbook -i inventory/hosts.ini deploy.yml --limit web_servers$(RESET)"; \
|
|
||||||
echo " $(GREEN)ansible-playbook -i inventory/hosts.ini deploy.yml --check$(RESET)"; \
|
|
||||||
echo ""; \
|
|
||||||
echo "$(CYAN)📄 Доступные playbook:$(RESET)"; \
|
|
||||||
ls -la *.yml 2>/dev/null | grep -v molecule || echo " $(BLUE)📄 deploy.yml - основной playbook для развертывания$(RESET)";; \
|
|
||||||
*) \
|
|
||||||
clear; \
|
|
||||||
echo "$(CYAN)🎯 Доступные команды:$(RESET)"; \
|
|
||||||
echo ""; \
|
|
||||||
echo " $(BLUE)🔧 make role install$(RESET) - установить зависимости"; \
|
|
||||||
echo " $(BLUE)🔍 make role lint$(RESET) - проверить синтаксис ролей"; \
|
|
||||||
echo " $(PURPLE)🚀 make role test$(RESET) - протестировать роли (default preset)"; \
|
|
||||||
echo " $(PURPLE)🚀 make role test [preset]$(RESET) - протестировать с любым preset"; \
|
|
||||||
echo " $(PURPLE)🚀 make role test minimal$(RESET) - протестировать с minimal preset"; \
|
|
||||||
echo " $(PURPLE)🚀 make role test standard$(RESET) - протестировать со standard preset"; \
|
|
||||||
echo " $(PURPLE)🚀 make role test docker$(RESET) - протестировать с docker preset"; \
|
|
||||||
echo " $(CYAN)📋 make role presets$(RESET) - показать список preset'ов"; \
|
|
||||||
echo " $(PURPLE)🚀 make role deploy$(RESET) - развернуть роли";; \
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
####################################################################################################
|
|
||||||
# Работа с Molecule Universal
|
|
||||||
####################################################################################################
|
|
||||||
molecule:
|
|
||||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
|
||||||
create) \
|
|
||||||
clear; \
|
|
||||||
echo "Создание тестового окружения ..."; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
bash -c "cd molecule/default && molecule create";; \
|
|
||||||
converge) \
|
|
||||||
clear; \
|
|
||||||
echo "Запуск плейбуков ..."; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
bash -c "cd molecule/default && molecule converge";; \
|
|
||||||
verify) \
|
|
||||||
clear; \
|
|
||||||
echo "Проверка результатов ..."; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
bash -c "cd molecule/default && molecule verify";; \
|
|
||||||
destroy) \
|
|
||||||
clear; \
|
|
||||||
echo "Удаление тестового окружения ..."; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
bash -c "cd molecule/default && molecule destroy";; \
|
|
||||||
test) \
|
|
||||||
clear; \
|
|
||||||
echo "Полный цикл тестирования ..."; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
bash -c "cd molecule/default && molecule test";; \
|
|
||||||
*) \
|
|
||||||
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; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
ansible-vault view --vault-password-file vault/.vault vault/$$FILE.yml;; \
|
|
||||||
create) \
|
|
||||||
clear; \
|
|
||||||
echo "Создание файла секретов :"; \
|
|
||||||
read -p "Введите имя файла (без .yml): " FILE; \
|
|
||||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
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; \
|
|
||||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
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; \
|
|
||||||
docker run --rm -it -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
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; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
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; \
|
|
||||||
docker run --rm -v "$(PWD):/workspace" -w /workspace \
|
|
||||||
quay.io/ansible/creator-ee:latest \
|
|
||||||
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
|
|
||||||
|
|
||||||
####################################################################################################
|
|
||||||
# Работа с Docker (упрощенная)
|
|
||||||
####################################################################################################
|
|
||||||
docker:
|
|
||||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
|
||||||
clean) \
|
|
||||||
clear; \
|
|
||||||
echo "$(RED)🧹 Очистка Docker ресурсов...$(RESET)"; \
|
|
||||||
docker system prune -f; \
|
|
||||||
docker volume prune -f; \
|
|
||||||
echo "$(GREEN)✅ Docker ресурсы очищены$(RESET)";; \
|
|
||||||
*) \
|
|
||||||
clear; \
|
|
||||||
echo "$(CYAN)🐳 Docker команды:$(RESET)"; \
|
|
||||||
echo ""; \
|
|
||||||
echo "$(RED)make docker clean$(RESET) - очистить Docker ресурсы"; \
|
|
||||||
echo ""; \
|
|
||||||
echo "$(YELLOW)💡 Основное тестирование через preset систему:$(RESET)"; \
|
|
||||||
echo " $(BLUE)make role test [preset]$(RESET) - универсальное тестирование"; \
|
|
||||||
echo " $(BLUE)make role presets$(RESET) - показать доступные preset'ы";; \
|
|
||||||
esac
|
|
||||||
|
|
||||||
####################################################################################################
|
|
||||||
# Справка
|
|
||||||
####################################################################################################
|
|
||||||
help:
|
|
||||||
@clear
|
|
||||||
@echo "=========================================="
|
|
||||||
@echo "AnsibleTemplate - Универсальная система"
|
|
||||||
@echo "тестирования Ansible ролей"
|
|
||||||
@echo "=========================================="
|
|
||||||
@echo ""
|
|
||||||
@echo "📁 Структура проекта:"
|
|
||||||
@echo " scripts/ - Скрипты автоматизации"
|
|
||||||
@echo " inventory/ - Инвентори файлы"
|
|
||||||
@echo " molecule/default/ - Molecule конфигурация"
|
|
||||||
@echo " roles/ - Ansible роли"
|
|
||||||
@echo " vault/ - Зашифрованные секреты"
|
|
||||||
@echo ""
|
|
||||||
@echo "🚀 Основные команды:"
|
|
||||||
@echo " make role install - установить зависимости"
|
|
||||||
@echo " make role lint - проверить синтаксис ролей"
|
|
||||||
@echo " make role test - протестировать роли (default preset)"
|
|
||||||
@echo " make role test [preset] - протестировать с любым preset"
|
|
||||||
@echo " make role test minimal - тест с minimal preset"
|
|
||||||
@echo " make role test standard - тест со standard preset"
|
|
||||||
@echo " make role test docker - тест с docker preset"
|
|
||||||
@echo " make role deploy - развернуть роли на серверы"
|
|
||||||
@echo " make docker clean - очистить Docker ресурсы"
|
|
||||||
@echo " make vault create - создать файл секретов"
|
|
||||||
@echo " make git new - создать новую ветку"
|
|
||||||
@echo ""
|
|
||||||
@echo "📖 Для подробной справки:"
|
|
||||||
@echo " make role - команды для ролей"
|
|
||||||
@echo " make molecule - команды Molecule"
|
|
||||||
@echo " make docker - команды Docker"
|
|
||||||
@echo " make vault - команды Vault"
|
|
||||||
@echo " make git - команды Git"
|
|
||||||
@echo "=========================================="
|
|
||||||
|
|
||||||
# Пустые цели для совместимости
|
|
||||||
view create edit show delete test lint deploy new advanced presets:
|
|
||||||
@true
|
|
||||||
|
|
||||||
# Динамические цели для всех возможных preset'ов
|
|
||||||
# Это позволяет использовать make role test [любой_preset] без ошибок
|
|
||||||
%:
|
|
||||||
@true
|
|
||||||
@@ -3,6 +3,15 @@
|
|||||||
# Автор: Сергей Антропов
|
# Автор: Сергей Антропов
|
||||||
# Сайт: https://devops.org.ru
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
- name: Test ping role
|
||||||
|
hosts: all
|
||||||
|
become: false
|
||||||
|
roles:
|
||||||
|
- ping
|
||||||
|
tags:
|
||||||
|
- ping
|
||||||
|
- test
|
||||||
|
|
||||||
- name: Test nginx role
|
- name: Test nginx role
|
||||||
hosts: all
|
hosts: all
|
||||||
become: true
|
become: true
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
---
|
|
||||||
# Переменные по умолчанию для роли nginx
|
|
||||||
# Автор: Сергей Антропов
|
|
||||||
# Сайт: https://devops.org.ru
|
|
||||||
|
|
||||||
# Основные настройки nginx
|
|
||||||
nginx_user: "nginx"
|
|
||||||
nginx_worker_processes: "auto"
|
|
||||||
nginx_worker_connections: 1024
|
|
||||||
nginx_keepalive_timeout: 65
|
|
||||||
|
|
||||||
# Настройки сервера
|
|
||||||
nginx_server_name: "{{ ansible_fqdn | default(ansible_hostname) }}"
|
|
||||||
nginx_listen_port: 80
|
|
||||||
nginx_root_dir: "/var/www/html"
|
|
||||||
nginx_index_file: "index.html"
|
|
||||||
|
|
||||||
# Настройки логов
|
|
||||||
nginx_access_log: "/var/log/nginx/access.log"
|
|
||||||
nginx_error_log: "/var/log/nginx/error.log"
|
|
||||||
|
|
||||||
# Настройки безопасности
|
|
||||||
nginx_server_tokens: "off"
|
|
||||||
nginx_hide_version: true
|
|
||||||
|
|
||||||
# Настройки производительности
|
|
||||||
nginx_sendfile: "on"
|
|
||||||
nginx_tcp_nopush: "on"
|
|
||||||
nginx_tcp_nodelay: "on"
|
|
||||||
|
|
||||||
# Настройки gzip
|
|
||||||
nginx_gzip: true
|
|
||||||
nginx_gzip_vary: "on"
|
|
||||||
nginx_gzip_min_length: 1024
|
|
||||||
nginx_gzip_types:
|
|
||||||
- "text/plain"
|
|
||||||
- "text/css"
|
|
||||||
- "text/xml"
|
|
||||||
- "text/javascript"
|
|
||||||
- "application/javascript"
|
|
||||||
- "application/xml+rss"
|
|
||||||
- "application/json"
|
|
||||||
|
|
||||||
# Настройки для разных ОС
|
|
||||||
nginx_packages:
|
|
||||||
- nginx
|
|
||||||
|
|
||||||
# Дополнительные пакеты для Ubuntu/Debian
|
|
||||||
nginx_ubuntu_packages:
|
|
||||||
- nginx
|
|
||||||
- nginx-common
|
|
||||||
|
|
||||||
# Дополнительные пакеты для RHEL/CentOS
|
|
||||||
nginx_rhel_packages:
|
|
||||||
- nginx
|
|
||||||
- nginx-mod-http-geoip
|
|
||||||
- nginx-mod-http-image-filter
|
|
||||||
- nginx-mod-http-xslt-filter
|
|
||||||
- nginx-mod-mail
|
|
||||||
- nginx-mod-stream
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
# Обработчики для роли nginx
|
|
||||||
# Автор: Сергей Антропов
|
|
||||||
# Сайт: https://devops.org.ru
|
|
||||||
|
|
||||||
- name: Restart nginx
|
|
||||||
systemd:
|
|
||||||
name: nginx
|
|
||||||
state: restarted
|
|
||||||
listen: restart nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- service
|
|
||||||
- restart
|
|
||||||
|
|
||||||
- name: Reload nginx
|
|
||||||
systemd:
|
|
||||||
name: nginx
|
|
||||||
state: reloaded
|
|
||||||
listen: reload nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- service
|
|
||||||
- reload
|
|
||||||
|
|
||||||
- name: Start nginx
|
|
||||||
systemd:
|
|
||||||
name: nginx
|
|
||||||
state: started
|
|
||||||
listen: start nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- service
|
|
||||||
- start
|
|
||||||
|
|
||||||
- name: Stop nginx
|
|
||||||
systemd:
|
|
||||||
name: nginx
|
|
||||||
state: stopped
|
|
||||||
listen: stop nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- service
|
|
||||||
- stop
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
# Метаданные роли nginx
|
|
||||||
# Автор: Сергей Антропов
|
|
||||||
# Сайт: https://devops.org.ru
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: Сергей Антропов
|
|
||||||
description: Простая роль для установки и настройки nginx
|
|
||||||
company: DevOps.org.ru
|
|
||||||
license: MIT
|
|
||||||
min_ansible_version: "2.9"
|
|
||||||
platforms:
|
|
||||||
- name: Ubuntu
|
|
||||||
versions:
|
|
||||||
- jammy
|
|
||||||
- focal
|
|
||||||
- name: EL
|
|
||||||
versions:
|
|
||||||
- all
|
|
||||||
galaxy_tags:
|
|
||||||
- web
|
|
||||||
- nginx
|
|
||||||
- http
|
|
||||||
- server
|
|
||||||
|
|
||||||
dependencies: []
|
|
||||||
@@ -1,196 +0,0 @@
|
|||||||
---
|
|
||||||
# Основные задачи для роли nginx
|
|
||||||
# Автор: Сергей Антропов
|
|
||||||
# Сайт: https://devops.org.ru
|
|
||||||
|
|
||||||
- name: Установка nginx на Ubuntu/Debian
|
|
||||||
apt:
|
|
||||||
name: "{{ nginx_ubuntu_packages }}"
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- install
|
|
||||||
- debian
|
|
||||||
|
|
||||||
- name: Установка nginx на RHEL/CentOS
|
|
||||||
yum:
|
|
||||||
name: "{{ nginx_rhel_packages }}"
|
|
||||||
state: present
|
|
||||||
when: ansible_os_family == "RedHat"
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- install
|
|
||||||
- rhel
|
|
||||||
|
|
||||||
- name: Включение и запуск nginx на Ubuntu/Debian
|
|
||||||
systemd:
|
|
||||||
name: nginx
|
|
||||||
enabled: true
|
|
||||||
state: started
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- service
|
|
||||||
- debian
|
|
||||||
|
|
||||||
- name: Включение и запуск nginx на RHEL/CentOS
|
|
||||||
systemd:
|
|
||||||
name: nginx
|
|
||||||
enabled: true
|
|
||||||
state: started
|
|
||||||
when: ansible_os_family == "RedHat"
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- service
|
|
||||||
- rhel
|
|
||||||
|
|
||||||
- name: Создание директории для веб-контента
|
|
||||||
file:
|
|
||||||
path: "{{ nginx_root_dir }}"
|
|
||||||
state: directory
|
|
||||||
owner: "{{ nginx_user }}"
|
|
||||||
group: "{{ nginx_user }}"
|
|
||||||
mode: '0755'
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- directories
|
|
||||||
|
|
||||||
- name: Создание тестовой страницы
|
|
||||||
copy:
|
|
||||||
content: |
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Nginx Test Page</title>
|
|
||||||
<style>
|
|
||||||
body { font-family: Arial, sans-serif; margin: 40px; }
|
|
||||||
.container { max-width: 600px; margin: 0 auto; }
|
|
||||||
h1 { color: #333; }
|
|
||||||
.info { background: #f4f4f4; padding: 20px; border-radius: 5px; }
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<h1>Nginx работает!</h1>
|
|
||||||
<div class="info">
|
|
||||||
<p><strong>Сервер:</strong> {{ ansible_hostname }}</p>
|
|
||||||
<p><strong>ОС:</strong> {{ ansible_distribution }} \
|
|
||||||
{{ ansible_distribution_version }}</p>
|
|
||||||
<p><strong>Время:</strong> {{ ansible_date_time.iso8601 }}</p>
|
|
||||||
<p><strong>Роль:</strong> nginx (Сергей Антропов)</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
dest: "{{ nginx_root_dir }}/{{ nginx_index_file }}"
|
|
||||||
owner: "{{ nginx_user }}"
|
|
||||||
group: "{{ nginx_user }}"
|
|
||||||
mode: '0644'
|
|
||||||
notify: restart nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- content
|
|
||||||
|
|
||||||
- name: Создание резервной копии конфигурации nginx
|
|
||||||
copy:
|
|
||||||
src: "{{ item }}"
|
|
||||||
dest: "{{ item }}.backup"
|
|
||||||
remote_src: true
|
|
||||||
mode: '0644'
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
loop:
|
|
||||||
- /etc/nginx/nginx.conf
|
|
||||||
- /etc/nginx/sites-available/default
|
|
||||||
ignore_errors: true
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- backup
|
|
||||||
|
|
||||||
- name: Создание резервной копии конфигурации nginx (RHEL)
|
|
||||||
copy:
|
|
||||||
src: "{{ item }}"
|
|
||||||
dest: "{{ item }}.backup"
|
|
||||||
remote_src: true
|
|
||||||
mode: '0644'
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
loop:
|
|
||||||
- /etc/nginx/nginx.conf
|
|
||||||
- /etc/nginx/conf.d/default.conf
|
|
||||||
ignore_errors: true
|
|
||||||
when: ansible_os_family == "RedHat"
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- backup
|
|
||||||
|
|
||||||
- name: Настройка основной конфигурации nginx
|
|
||||||
template:
|
|
||||||
src: nginx.conf.j2
|
|
||||||
dest: /etc/nginx/nginx.conf
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: '0644'
|
|
||||||
backup: true
|
|
||||||
notify: restart nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- main
|
|
||||||
|
|
||||||
- name: Настройка виртуального хоста (Ubuntu/Debian)
|
|
||||||
template:
|
|
||||||
src: default.conf.j2
|
|
||||||
dest: /etc/nginx/sites-available/default
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: '0644'
|
|
||||||
backup: true
|
|
||||||
when: ansible_os_family == "Debian"
|
|
||||||
notify: restart nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- vhost
|
|
||||||
- debian
|
|
||||||
|
|
||||||
- name: Настройка виртуального хоста (RHEL/CentOS)
|
|
||||||
template:
|
|
||||||
src: default.conf.j2
|
|
||||||
dest: /etc/nginx/conf.d/default.conf
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: '0644'
|
|
||||||
backup: true
|
|
||||||
when: ansible_os_family == "RedHat"
|
|
||||||
notify: restart nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- vhost
|
|
||||||
- rhel
|
|
||||||
|
|
||||||
- name: Проверка конфигурации nginx
|
|
||||||
command: nginx -t
|
|
||||||
register: nginx_config_test
|
|
||||||
changed_when: false
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- test
|
|
||||||
|
|
||||||
- name: Показать результат проверки конфигурации
|
|
||||||
debug:
|
|
||||||
msg: "{{ nginx_config_test.stdout_lines }}"
|
|
||||||
when: nginx_config_test.stdout_lines is defined
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- config
|
|
||||||
- test
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
# Конфигурация виртуального хоста nginx
|
|
||||||
# Автор: Сергей Антропов
|
|
||||||
# Сайт: https://devops.org.ru
|
|
||||||
# Сгенерировано: {{ ansible_date_time.iso8601 }}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen {{ nginx_listen_port }};
|
|
||||||
server_name {{ nginx_server_name }};
|
|
||||||
|
|
||||||
# Настройки безопасности
|
|
||||||
{% if nginx_hide_version %}
|
|
||||||
server_tokens off;
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# Корневая директория
|
|
||||||
root {{ nginx_root_dir }};
|
|
||||||
index {{ nginx_index_file }};
|
|
||||||
|
|
||||||
# Настройки логов для этого виртуального хоста
|
|
||||||
access_log {{ nginx_access_log }};
|
|
||||||
error_log {{ nginx_error_log }};
|
|
||||||
|
|
||||||
# Основная локация
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/ =404;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Настройки для статических файлов
|
|
||||||
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
|
|
||||||
expires 1y;
|
|
||||||
add_header Cache-Control "public, immutable";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Настройки безопасности
|
|
||||||
location ~ /\. {
|
|
||||||
deny all;
|
|
||||||
access_log off;
|
|
||||||
log_not_found off;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Настройки для favicon
|
|
||||||
location = /favicon.ico {
|
|
||||||
log_not_found off;
|
|
||||||
access_log off;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Настройки для robots.txt
|
|
||||||
location = /robots.txt {
|
|
||||||
log_not_found off;
|
|
||||||
access_log off;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Настройки для health check
|
|
||||||
location /health {
|
|
||||||
access_log off;
|
|
||||||
return 200 "healthy\n";
|
|
||||||
add_header Content-Type text/plain;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Настройки для статуса nginx
|
|
||||||
location /nginx_status {
|
|
||||||
stub_status on;
|
|
||||||
access_log off;
|
|
||||||
allow 127.0.0.1;
|
|
||||||
deny all;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# Основная конфигурация nginx
|
|
||||||
# Автор: Сергей Антропов
|
|
||||||
# Сайт: https://devops.org.ru
|
|
||||||
# Сгенерировано: {{ ansible_date_time.iso8601 }}
|
|
||||||
|
|
||||||
user {{ nginx_user }};
|
|
||||||
worker_processes {{ nginx_worker_processes }};
|
|
||||||
|
|
||||||
error_log {{ nginx_error_log }};
|
|
||||||
pid /run/nginx.pid;
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections {{ nginx_worker_connections }};
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
# Основные настройки
|
|
||||||
sendfile {{ nginx_sendfile }};
|
|
||||||
tcp_nopush {{ nginx_tcp_nopush }};
|
|
||||||
tcp_nodelay {{ nginx_tcp_nodelay }};
|
|
||||||
keepalive_timeout {{ nginx_keepalive_timeout }};
|
|
||||||
types_hash_max_size 2048;
|
|
||||||
server_tokens {{ nginx_server_tokens }};
|
|
||||||
|
|
||||||
# Настройки MIME типов
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
|
|
||||||
# Настройки логирования
|
|
||||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
||||||
'$status $body_bytes_sent "$http_referer" '
|
|
||||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
|
||||||
|
|
||||||
access_log {{ nginx_access_log }} main;
|
|
||||||
|
|
||||||
# Настройки gzip
|
|
||||||
{% if nginx_gzip %}
|
|
||||||
gzip {{ nginx_gzip_vary }};
|
|
||||||
gzip_min_length {{ nginx_gzip_min_length }};
|
|
||||||
gzip_types
|
|
||||||
{% for gzip_type in nginx_gzip_types %}
|
|
||||||
{{ gzip_type }}{% if not loop.last %} {% endif %}
|
|
||||||
{% endfor %};
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# Настройки безопасности
|
|
||||||
{% if nginx_hide_version %}
|
|
||||||
server_tokens off;
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# Включение конфигураций виртуальных хостов
|
|
||||||
{% if ansible_os_family == "Debian" %}
|
|
||||||
include /etc/nginx/conf.d/*.conf;
|
|
||||||
include /etc/nginx/sites-enabled/*;
|
|
||||||
{% elif ansible_os_family == "RedHat" %}
|
|
||||||
include /etc/nginx/conf.d/*.conf;
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
66
roles/ping/QUICKSTART.md
Normal file
66
roles/ping/QUICKSTART.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# Быстрый старт - Роль Ping
|
||||||
|
|
||||||
|
## Что делает роль?
|
||||||
|
|
||||||
|
Роль выполняет ping yandex.ru из 5 пакетов и выводит результат.
|
||||||
|
|
||||||
|
## Основные задачи роли:
|
||||||
|
|
||||||
|
1. **Выполнение ping** - отправляет 5 пакетов на yandex.ru
|
||||||
|
2. **Вывод результата** - показывает строки результата ping
|
||||||
|
3. **Статистика** - выводит статус и время выполнения
|
||||||
|
4. **Дополнительная информация** - выводит полный вывод команды
|
||||||
|
|
||||||
|
## Как использовать:
|
||||||
|
|
||||||
|
### Вариант 1: Использование в deploy.yml (уже добавлено)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Запуск только роли ping
|
||||||
|
make role test minimal ping
|
||||||
|
|
||||||
|
# Запуск всех ролей
|
||||||
|
make role test minimal
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вариант 2: Использование через roles/ping/playbook.yml
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Запуск напрямую
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/ping/playbook.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вариант 3: Использование с кастомными параметрами
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Тест ping
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: ping
|
||||||
|
vars:
|
||||||
|
ping_host: google.com
|
||||||
|
ping_count: 10
|
||||||
|
```
|
||||||
|
|
||||||
|
## Переменные:
|
||||||
|
|
||||||
|
- `ping_host` - хост для ping (по умолчанию: yandex.ru)
|
||||||
|
- `ping_count` - количество пакетов (по умолчанию: 5)
|
||||||
|
|
||||||
|
## Теги:
|
||||||
|
|
||||||
|
- `ping` - выполнение всех задач
|
||||||
|
- `test` - тестирование
|
||||||
|
- `debug` - отладочная информация
|
||||||
|
- `stats` - статистика
|
||||||
|
|
||||||
|
## Пример вывода:
|
||||||
|
|
||||||
|
```
|
||||||
|
=========================================
|
||||||
|
Результат ping yandex.ru
|
||||||
|
=========================================
|
||||||
|
Статус: УСПЕШНО
|
||||||
|
Время выполнения: 4.234
|
||||||
|
=========================================
|
||||||
|
```
|
||||||
96
roles/ping/README.md
Normal file
96
roles/ping/README.md
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
# Роль Ping
|
||||||
|
|
||||||
|
**Автор:** Сергей Антропов
|
||||||
|
**Сайт:** https://devops.org.ru
|
||||||
|
|
||||||
|
## Описание
|
||||||
|
|
||||||
|
Роль для выполнения ping проверок подключения к сети. Роль отправляет ping пакеты на указанный хост и выводит результаты выполнения.
|
||||||
|
|
||||||
|
## Требования
|
||||||
|
|
||||||
|
- Ansible >= 2.9
|
||||||
|
- Наличие утилиты `ping` на целевых хостах
|
||||||
|
- Привилегии на выполнение ping (обычно не требуются)
|
||||||
|
|
||||||
|
## Переменные
|
||||||
|
|
||||||
|
| Переменная | Тип | По умолчанию | Описание |
|
||||||
|
|------------|-----|--------------|----------|
|
||||||
|
| `ping_host` | string | `yandex.ru` | Целевой хост для ping |
|
||||||
|
| `ping_count` | integer | `5` | Количество пакетов для отправки |
|
||||||
|
| `ping_interval` | integer | `1` | Интервал между пакетами (в секундах) |
|
||||||
|
| `ping_timeout` | integer | `10` | Таймаут (в секундах) |
|
||||||
|
| `ping_packet_size` | integer | `64` | Размер пакета (в байтах) |
|
||||||
|
|
||||||
|
## Примеры использования
|
||||||
|
|
||||||
|
### Базовое использование
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Выполнить ping проверку
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- ping
|
||||||
|
```
|
||||||
|
|
||||||
|
### С кастомными параметрами
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Выполнить ping проверку с кастомными параметрами
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: ping
|
||||||
|
vars:
|
||||||
|
ping_host: google.com
|
||||||
|
ping_count: 10
|
||||||
|
```
|
||||||
|
|
||||||
|
### В playbook
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- name: Тестирование сетевого подключения
|
||||||
|
hosts: servers
|
||||||
|
become: false
|
||||||
|
roles:
|
||||||
|
- role: ping
|
||||||
|
vars:
|
||||||
|
ping_host: 8.8.8.8
|
||||||
|
ping_count: 3
|
||||||
|
tags:
|
||||||
|
- network
|
||||||
|
- test
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tags
|
||||||
|
|
||||||
|
Роль поддерживает следующие теги:
|
||||||
|
|
||||||
|
- `ping` - выполнение всех задач роли
|
||||||
|
- `test` - тестирование подключения
|
||||||
|
- `debug` - вывод отладочной информации
|
||||||
|
- `stats` - вывод статистики
|
||||||
|
|
||||||
|
Пример использования тегов:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible-playbook site.yml --tags "ping,debug"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Поддерживаемые ОС
|
||||||
|
|
||||||
|
- Red Hat Enterprise Linux 7/8/9
|
||||||
|
- CentOS 7/8/Stream
|
||||||
|
- AlmaLinux 8/9
|
||||||
|
- Rocky Linux 8/9
|
||||||
|
- Ubuntu 20.04/22.04
|
||||||
|
- Debian 10/11/12
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
MIT
|
||||||
|
|
||||||
|
## Автор
|
||||||
|
|
||||||
|
Сергей Антропов - https://devops.org.ru
|
||||||
19
roles/ping/defaults/main.yml
Normal file
19
roles/ping/defaults/main.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
# Переменные по умолчанию для роли ping
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
# Целевой хост для ping
|
||||||
|
ping_host: yandex.ru
|
||||||
|
|
||||||
|
# Количество пакетов для отправки
|
||||||
|
ping_count: 5
|
||||||
|
|
||||||
|
# Интервал между пакетами (в секундах)
|
||||||
|
ping_interval: 1
|
||||||
|
|
||||||
|
# Таймаут (в секундах)
|
||||||
|
ping_timeout: 10
|
||||||
|
|
||||||
|
# Размер пакета (в байтах)
|
||||||
|
ping_packet_size: 64
|
||||||
7
roles/ping/handlers/main.yml
Normal file
7
roles/ping/handlers/main.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
# Handlers для роли ping
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
# В данный момент handlers не требуются для роли ping (пустой файл для совместимости)
|
||||||
|
[]
|
||||||
37
roles/ping/meta/main.yml
Normal file
37
roles/ping/meta/main.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
# Метаданные роли ping
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
galaxy_info:
|
||||||
|
role_name: ping
|
||||||
|
namespace: antropov
|
||||||
|
author: Сергей Антропов
|
||||||
|
description: Роль для выполнения ping проверок подключения к сети
|
||||||
|
company: DevOps.org.ru
|
||||||
|
license: MIT
|
||||||
|
min_ansible_version: "2.9"
|
||||||
|
platforms:
|
||||||
|
- name: EL
|
||||||
|
versions:
|
||||||
|
- "7"
|
||||||
|
- "8"
|
||||||
|
- "9"
|
||||||
|
- "all"
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- jammy
|
||||||
|
- focal
|
||||||
|
- noble
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- bullseye
|
||||||
|
- bookworm
|
||||||
|
- trixie
|
||||||
|
galaxy_tags:
|
||||||
|
- networking
|
||||||
|
- ping
|
||||||
|
- connectivity
|
||||||
|
- testing
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
16
roles/ping/playbook.yml
Normal file
16
roles/ping/playbook.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
# Пример playbook для роли ping
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
- name: Тестирование ping подключения
|
||||||
|
hosts: all
|
||||||
|
become: false
|
||||||
|
roles:
|
||||||
|
- role: ping
|
||||||
|
vars:
|
||||||
|
ping_host: yandex.ru
|
||||||
|
ping_count: 5
|
||||||
|
tags:
|
||||||
|
- ping
|
||||||
|
- test
|
||||||
44
roles/ping/tasks/main.yml
Normal file
44
roles/ping/tasks/main.yml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
# Основные задачи для роли ping
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
- name: Выполнение ping с пакетами
|
||||||
|
command: ping -c {{ ping_count }} {{ ping_host }}
|
||||||
|
register: ping_result
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
tags:
|
||||||
|
- ping
|
||||||
|
- test
|
||||||
|
|
||||||
|
- name: Вывод результата ping
|
||||||
|
debug:
|
||||||
|
msg: "{{ ping_result.stdout_lines }}"
|
||||||
|
tags:
|
||||||
|
- ping
|
||||||
|
- test
|
||||||
|
- debug
|
||||||
|
|
||||||
|
- name: Статистика ping
|
||||||
|
debug:
|
||||||
|
msg: |
|
||||||
|
=========================================
|
||||||
|
Результат ping {{ ping_host }}
|
||||||
|
=========================================
|
||||||
|
Статус: {{ 'УСПЕШНО' if ping_result.rc == 0 else 'ОШИБКА' }}
|
||||||
|
Код возврата: {{ ping_result.rc }}
|
||||||
|
=========================================
|
||||||
|
tags:
|
||||||
|
- ping
|
||||||
|
- test
|
||||||
|
- stats
|
||||||
|
|
||||||
|
- name: Дополнительная информация о ping
|
||||||
|
debug:
|
||||||
|
var: ping_result.stdout
|
||||||
|
when: ping_result.stdout is defined
|
||||||
|
tags:
|
||||||
|
- ping
|
||||||
|
- test
|
||||||
|
- debug
|
||||||
Reference in New Issue
Block a user