feat: Полная переработка документации и структуры проекта
- Переписан главный README.md с подробной навигацией - Создана структурированная документация в docs/: - getting-started.md - быстрый старт - creating-roles.md - создание ролей - cicd-setup.md - настройка CI/CD - monitoring.md - мониторинг и диагностика - site-yml-guide.md - руководство по site.yml - molecule-guide.md - подробное руководство по Molecule - Переписан dockerfiles/README.md с детальным описанием всех образов - Перенесен deploy.yml из корня в roles/ для лучшей организации - Обновлен site.yml для импорта roles/deploy.yml - Добавлены fallback значения в create.yml для надежности - Созданы скрипты автоматизации: - update-playbooks.sh - обновление playbook'ов - generate-role-docs.sh - генерация документации - setup-cicd.sh - настройка CI/CD - Добавлен env.example с примерами переменных - Обновлен Makefile с новыми командами автоматизации - Улучшена навигация по документации
This commit is contained in:
58
scripts/generate-role-docs.sh
Executable file
58
scripts/generate-role-docs.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
# Автоматическое создание документации для новых ролей
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "📚 Генерация документации для ролей..."
|
||||
|
||||
# Получаем список всех ролей
|
||||
ROLES=$(find roles/ -name 'main.yml' -path '*/tasks/*' | sed 's|roles/||; s|/tasks/main.yml||')
|
||||
|
||||
for role in $ROLES; do
|
||||
echo "📝 Генерация документации для роли: $role"
|
||||
|
||||
# Создаем README.md для роли если его нет
|
||||
if [ ! -f "roles/$role/README.md" ]; then
|
||||
cat > "roles/$role/README.md" << EOF
|
||||
# Роль $role
|
||||
|
||||
**Автор:** Сергей Антропов
|
||||
**Сайт:** https://devops.org.ru
|
||||
|
||||
## Описание
|
||||
|
||||
Роль для настройки и конфигурации $role сервиса.
|
||||
|
||||
## Требования
|
||||
|
||||
- Ansible >= 2.9
|
||||
- Поддерживаемые ОС: Ubuntu, Debian, RHEL, CentOS, AlmaLinux, Rocky Linux
|
||||
|
||||
## Переменные
|
||||
|
||||
| Переменная | Тип | По умолчанию | Описание |
|
||||
|------------|-----|--------------|----------|
|
||||
| \`${role}_enabled\` | boolean | \`true\` | Включить роль |
|
||||
| \`${role}_packages\` | list | \`[]\` | Пакеты для установки |
|
||||
|
||||
## Примеры использования
|
||||
|
||||
\`\`\`yaml
|
||||
- name: Настройка $role
|
||||
hosts: all
|
||||
roles:
|
||||
- $role
|
||||
\`\`\`
|
||||
|
||||
## Tags
|
||||
|
||||
- \`$role\` - выполнение всех задач роли
|
||||
- \`install\` - установка пакетов
|
||||
- \`config\` - настройка конфигурации
|
||||
EOF
|
||||
fi
|
||||
done
|
||||
|
||||
echo "✅ Документация сгенерирована"
|
||||
103
scripts/setup-cicd.sh
Executable file
103
scripts/setup-cicd.sh
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/bin/bash
|
||||
# Автоматическая настройка CI/CD для AnsibleTemplate
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "🔧 Настройка CI/CD для AnsibleTemplate..."
|
||||
|
||||
# Создание директории .github/workflows
|
||||
mkdir -p .github/workflows
|
||||
|
||||
# Создание базового workflow для GitHub Actions
|
||||
echo "📝 Создание GitHub Actions workflow..."
|
||||
cat > .github/workflows/ansible-test.yml << 'EOF'
|
||||
name: Ansible Testing
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install ansible ansible-lint
|
||||
ansible-galaxy collection install -r requirements.yml
|
||||
- name: Run lint
|
||||
run: make role lint
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint
|
||||
strategy:
|
||||
matrix:
|
||||
preset: [minimal, default, performance]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Docker
|
||||
run: |
|
||||
sudo systemctl start docker
|
||||
sudo usermod -aG docker $USER
|
||||
- name: Run tests
|
||||
run: make role test ${{ matrix.preset }}
|
||||
|
||||
deploy-check:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [lint, test]
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Check deployment
|
||||
run: make role deploy
|
||||
env:
|
||||
ANSIBLE_HOST_KEY_CHECKING: false
|
||||
EOF
|
||||
|
||||
# Создание Azure DevOps pipeline
|
||||
echo "📝 Создание Azure DevOps pipeline..."
|
||||
cat > azure-pipelines.yml << 'EOF'
|
||||
trigger:
|
||||
- main
|
||||
pool:
|
||||
vmImage: 'ubuntu-latest'
|
||||
stages:
|
||||
- stage: Test
|
||||
jobs:
|
||||
- job: TestJob
|
||||
steps:
|
||||
- script: make role test
|
||||
EOF
|
||||
|
||||
# Создание Jenkinsfile
|
||||
echo "📝 Создание Jenkinsfile..."
|
||||
cat > Jenkinsfile << 'EOF'
|
||||
pipeline {
|
||||
agent any
|
||||
stages {
|
||||
stage('Test') {
|
||||
steps {
|
||||
sh 'make role test'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
# Создание GitLab CI
|
||||
echo "📝 Создание GitLab CI..."
|
||||
cat > .gitlab-ci.yml << 'EOF'
|
||||
stages:
|
||||
- test
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- make role test
|
||||
EOF
|
||||
|
||||
echo "✅ CI/CD настроен"
|
||||
222
scripts/update-playbooks.sh
Executable file
222
scripts/update-playbooks.sh
Executable file
@@ -0,0 +1,222 @@
|
||||
#!/bin/bash
|
||||
# Автоматическое обновление playbook'ов при добавлении новых ролей
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "🔍 Обнаружение новых ролей..."
|
||||
|
||||
# Получаем список всех ролей
|
||||
ROLES=$(find roles/ -name 'main.yml' -path '*/tasks/*' | sed 's|roles/||; s|/tasks/main.yml||' | sed 's|^/||' | grep -v '^$' | tr '\n' ' ')
|
||||
|
||||
echo "📋 Найденные роли: $ROLES"
|
||||
|
||||
# Обновляем molecule/default/site.yml (только если файл не существует)
|
||||
if [ ! -f "molecule/default/site.yml" ]; then
|
||||
echo "📝 Создание molecule/default/site.yml..."
|
||||
cat > molecule/default/site.yml << 'EOF'
|
||||
---
|
||||
# Универсальный playbook для тестирования Ansible ролей
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
#
|
||||
# Этот файл отвечает за:
|
||||
# 1. Обновление пакетов в контейнерах при запуске тестов
|
||||
# 2. Установку common tools для корректной работы тестов
|
||||
# 3. Подготовку окружения для тестирования ролей
|
||||
# 4. Импорт roles/deploy.yml для запуска ролей
|
||||
|
||||
- name: Подготовка окружения для тестирования
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
# Обновление кеша пакетов для Debian/Ubuntu
|
||||
- name: Update package cache (Debian/Ubuntu)
|
||||
apt:
|
||||
update_cache: true
|
||||
cache_valid_time: 3600
|
||||
when: ansible_os_family == 'Debian'
|
||||
changed_when: false
|
||||
tags:
|
||||
- setup
|
||||
- update
|
||||
|
||||
# Обновление кеша пакетов для RHEL/CentOS/AlmaLinux/Rocky
|
||||
- name: Update package cache (RHEL/CentOS/AlmaLinux/Rocky)
|
||||
yum:
|
||||
update_cache: true
|
||||
when: ansible_os_family == 'RedHat'
|
||||
changed_when: false
|
||||
tags:
|
||||
- setup
|
||||
- update
|
||||
|
||||
# Обновление кеша пакетов для Alt Linux
|
||||
- name: Update package cache (Alt Linux)
|
||||
apt:
|
||||
update_cache: true
|
||||
when: ansible_distribution == 'Alt'
|
||||
changed_when: false
|
||||
tags:
|
||||
- setup
|
||||
- update
|
||||
|
||||
# Установка common tools для всех ОС
|
||||
- name: Install common tools (Debian/Ubuntu)
|
||||
apt:
|
||||
name:
|
||||
- curl
|
||||
- jq
|
||||
- ca-certificates
|
||||
- iproute2
|
||||
- iputils-ping
|
||||
- procps
|
||||
- net-tools
|
||||
- sudo
|
||||
- vim
|
||||
- wget
|
||||
- unzip
|
||||
- git
|
||||
state: present
|
||||
update_cache: false
|
||||
when: ansible_os_family == 'Debian'
|
||||
tags:
|
||||
- setup
|
||||
- tools
|
||||
|
||||
- name: Install common tools (RHEL/CentOS/AlmaLinux/Rocky)
|
||||
yum:
|
||||
name:
|
||||
- curl
|
||||
- jq
|
||||
- ca-certificates
|
||||
- iproute
|
||||
- iputils
|
||||
- procps-ng
|
||||
- net-tools
|
||||
- sudo
|
||||
- vim
|
||||
- wget
|
||||
- unzip
|
||||
- git
|
||||
state: present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
tags:
|
||||
- setup
|
||||
- tools
|
||||
|
||||
- name: Install common tools (Alt Linux)
|
||||
apt:
|
||||
name:
|
||||
- curl
|
||||
- jq
|
||||
- ca-certificates
|
||||
- iproute2
|
||||
- iputils
|
||||
- procps
|
||||
- net-tools
|
||||
- sudo
|
||||
- vim
|
||||
- wget
|
||||
- unzip
|
||||
- git
|
||||
state: present
|
||||
when: ansible_distribution == 'Alt'
|
||||
tags:
|
||||
- setup
|
||||
- tools
|
||||
|
||||
# Установка Python для Ansible (если не установлен)
|
||||
- name: Install Python (Debian/Ubuntu)
|
||||
apt:
|
||||
name:
|
||||
- python3
|
||||
- python3-pip
|
||||
- python3-venv
|
||||
state: present
|
||||
when: ansible_os_family == 'Debian'
|
||||
tags:
|
||||
- setup
|
||||
- python
|
||||
|
||||
- name: Install Python (RHEL/CentOS/AlmaLinux/Rocky)
|
||||
yum:
|
||||
name:
|
||||
- python3
|
||||
- python3-pip
|
||||
state: present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
tags:
|
||||
- setup
|
||||
- python
|
||||
|
||||
- name: Install Python (Alt Linux)
|
||||
apt:
|
||||
name:
|
||||
- python3
|
||||
- python3-pip
|
||||
state: present
|
||||
when: ansible_distribution == 'Alt'
|
||||
tags:
|
||||
- setup
|
||||
- python
|
||||
|
||||
# Создание пользователя для тестирования
|
||||
- name: Create test user
|
||||
user:
|
||||
name: testuser
|
||||
shell: /bin/bash
|
||||
create_home: yes
|
||||
state: present
|
||||
tags:
|
||||
- setup
|
||||
- user
|
||||
|
||||
# Настройка sudo для тестового пользователя
|
||||
- name: Configure sudo for test user
|
||||
lineinfile:
|
||||
path: /etc/sudoers
|
||||
line: "testuser ALL=(ALL) NOPASSWD:ALL"
|
||||
state: present
|
||||
validate: 'visudo -cf %s'
|
||||
tags:
|
||||
- setup
|
||||
- sudo
|
||||
|
||||
# Создание директории для тестов
|
||||
- name: Create test directory
|
||||
file:
|
||||
path: /tmp/ansible-test
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: testuser
|
||||
group: testuser
|
||||
tags:
|
||||
- setup
|
||||
- directory
|
||||
|
||||
- import_playbook: ../../roles/deploy.yml
|
||||
EOF
|
||||
else
|
||||
echo "📝 Файл molecule/default/site.yml уже существует, пропускаем создание"
|
||||
fi
|
||||
|
||||
# Обновляем roles/deploy.yml
|
||||
echo "📝 Обновление roles/deploy.yml..."
|
||||
cat > roles/deploy.yml << EOF
|
||||
---
|
||||
# Playbook для развертывания на продакшн серверах
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
- name: Развертывание всех ролей
|
||||
hosts: all
|
||||
roles:
|
||||
EOF
|
||||
|
||||
for role in $ROLES; do
|
||||
echo " - $role" >> roles/deploy.yml
|
||||
done
|
||||
|
||||
echo "✅ Playbook'и обновлены"
|
||||
Reference in New Issue
Block a user