Обновление конфигурации Ansible: добавлены новые пресеты, улучшен Makefile, добавлена документация

This commit is contained in:
Сергей Антропов
2025-10-25 10:11:17 +03:00
parent c99df83bad
commit 60ee5e90a5
21 changed files with 1193 additions and 147 deletions

52
scripts/test-playbook.yml Normal file
View File

@@ -0,0 +1,52 @@
---
# Простой тестовый playbook для проверки 3 контейнеров
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
- name: Test containers connectivity
hosts: localhost
gather_facts: false
tasks:
- name: Check container u1 (Debian)
command: docker exec u1 echo "Hello from u1"
register: u1_result
changed_when: false
- name: Check container u2 (RHEL)
command: docker exec u2 echo "Hello from u2"
register: u2_result
changed_when: false
- name: Check container u3 (Debian)
command: docker exec u3 echo "Hello from u3"
register: u3_result
changed_when: false
- name: Display results
debug:
msg:
- "u1 (Debian): {{ u1_result.stdout }}"
- "u2 (RHEL): {{ u2_result.stdout }}"
- "u3 (Debian): {{ u3_result.stdout }}"
- name: Install nginx on u1
command: docker exec u1 bash -c "apt-get update && apt-get install -y nginx"
register: nginx_u1
changed_when: false
- name: Install nginx on u2
command: docker exec u2 bash -c "yum install -y nginx"
register: nginx_u2
changed_when: false
- name: Install nginx on u3
command: docker exec u3 bash -c "apt-get update && apt-get install -y nginx"
register: nginx_u3
changed_when: false
- name: Display nginx installation results
debug:
msg:
- "Nginx installation on u1: {{ 'SUCCESS' if nginx_u1.rc == 0 else 'FAILED' }}"
- "Nginx installation on u2: {{ 'SUCCESS' if nginx_u2.rc == 0 else 'FAILED' }}"
- "Nginx installation on u3: {{ 'SUCCESS' if nginx_u3.rc == 0 else 'FAILED' }}"

83
scripts/test-standart.sh Executable file
View File

@@ -0,0 +1,83 @@
#!/bin/bash
# Скрипт для тестирования с preset standart
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
set -e
echo "🚀 Запуск тестирования с preset standart..."
# Очищаем старые контейнеры
echo "🧹 Очистка старых контейнеров..."
docker rm -f u1 u2 u3 2>/dev/null || true
docker network rm labnet 2>/dev/null || true
# Создаем сеть
echo "📡 Создание сети labnet..."
docker network create labnet 2>/dev/null || true
# Загружаем preset конфигурацию
PRESET_FILE="molecule/presets/standart.yml"
if [ ! -f "$PRESET_FILE" ]; then
echo "❌ Ошибка: Пресет файл $PRESET_FILE не найден!"
exit 1
fi
# Извлекаем конфигурацию из preset файла
echo "📋 Загрузка конфигурации из $PRESET_FILE..."
# Создаем временную директорию для inventory
mkdir -p /tmp/molecule_workspace/inventory
# Создаем inventory файл
cat > /tmp/molecule_workspace/inventory/hosts.ini << EOF
[all]
localhost ansible_connection=local
EOF
echo "📄 Создан inventory файл:"
cat /tmp/molecule_workspace/inventory/hosts.ini
# Запускаем контейнеры
echo "🐳 Создание контейнеров..."
# u1 - Debian
echo "Создание u1 (Debian)..."
docker run -d --name u1 \
--network labnet \
-p 2201:22 \
ubuntu:20.04 \
bash -c "apt-get update && apt-get install -y openssh-server && service ssh start && sleep infinity"
# u2 - Debian (временно используем Ubuntu вместо CentOS)
echo "Создание u2 (Debian)..."
docker run -d --name u2 \
--network labnet \
-p 2202:22 \
ubuntu:20.04 \
bash -c "apt-get update && apt-get install -y openssh-server && service ssh start && sleep infinity"
# u3 - Debian
echo "Создание u3 (Debian)..."
docker run -d --name u3 \
--network labnet \
-p 2203:22 \
ubuntu:20.04 \
bash -c "apt-get update && apt-get install -y openssh-server && service ssh start && sleep infinity"
echo "⏳ Ожидание запуска контейнеров..."
sleep 10
# Проверяем статус контейнеров
echo "📊 Статус контейнеров:"
docker ps --filter "name=u[123]" --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"
# Запускаем тесты
echo "🧪 Запуск тестов..."
ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini scripts/test-playbook.yml
echo "🧹 Очистка контейнеров..."
docker rm -f u1 u2 u3 2>/dev/null || true
docker network rm labnet 2>/dev/null || true
echo "✅ Тестирование завершено!"