diff --git a/docs/getting-started.md b/docs/getting-started.md index 0e3aa1b..a1462b7 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,18 +1,31 @@ # Быстрый старт с AnsibleLab **Автор:** Сергей Антропов -**Сайт:** https://devops.org.ru +**Сайт:** https://devops.org.ru +**Версия:** 2.0.0 ## 🚀 Установка и настройка ### 1. Клонирование репозитория ```bash -git clone https://github.com/your-username/AnsibleLab.git +git clone ssh://git@git.antropoff.ru:222/Ansible/AnsibleLab.git cd AnsibleLab ``` -### 2. Настройка Docker +### 2. Проверка структуры проекта + +```bash +# Просмотр доступных ролей +make role list + +# Просмотр доступных preset'ов +make presets list +``` + +### 3. Настройка Docker (опционально) + +Если вы хотите собрать собственные образы: ```bash # Настройка multi-arch builder @@ -25,22 +38,11 @@ make docker build make docker info ``` +**Примечание:** Используются готовые образы из Docker Hub `inecs/ansible-lab`. + ## 🧪 Первое тестирование -### 1. Управление ролями - -```bash -# Просмотр всех ролей -make role list - -# Создание новой роли (интерактивно) -make role create - -# Удаление роли (интерактивно) -make role delete -``` - -### 2. Просмотр доступных preset'ов +### 1. Просмотр доступных preset'ов ```bash # Список всех preset'ов @@ -50,42 +52,58 @@ make presets list make presets info PRESET=default ``` -### 3. Тестирование роли ping +### 2. Тестирование роли ping ```bash # Тестирование с default preset make role test -# Тестирование с minimal preset +# Тестирование с minimal preset (1 хост) make role test minimal ``` ### 3. Проверка результатов ```bash -# Просмотр логов -docker logs ansible-controller +# Проверка через логи +docker logs ansible-controller 2>/dev/null || echo "Контейнер не запущен" -# Вход в контейнер для отладки -docker exec -it ansible-controller bash +# Просмотр созданных контейнеров +docker ps -a --filter "network=labnet" ``` ## 🔧 Создание первой роли -### 1. Создание структуры роли +### 1. Создание новой роли ```bash -# Создание директории роли -mkdir -p roles/my-role/{tasks,handlers,templates,files,vars,defaults,meta} - -# Создание основных файлов -touch roles/my-role/{tasks,handlers,meta}/main.yml -touch roles/my-role/defaults/main.yml -touch roles/my-role/vars/main.yml -touch roles/my-role/README.md +# Интерактивное создание роли +make role create +# Введите имя роли (например: nginx) ``` -### 2. Разработка роли +### 2. Редактирование роли + +После создания роли будет создана структура в `roles/<имя-роли>/`: + +``` +roles/my-role/ +├── tasks/ +│ └── main.yml +├── handlers/ +│ └── main.yml +├── defaults/ +│ └── main.yml +├── vars/ +│ └── main.yml +├── meta/ +│ └── main.yml +├── templates/ +├── files/ +└── README.md +``` + +### 3. Написание задач роли **`roles/my-role/tasks/main.yml`:** ```yaml @@ -94,28 +112,19 @@ touch roles/my-role/README.md # Автор: Сергей Антропов # Сайт: https://devops.org.ru -- name: Установка пакетов - package: - name: "{{ my_role_packages }}" - state: present - when: my_role_enabled | default(true) - tags: - - my-role - - install +- name: Проверка установленных пакетов + debug: + msg: "Роль {{ role_name }} выполняется на {{ ansible_hostname }}" -- name: Настройка конфигурации - template: - src: my-role.conf.j2 - dest: /etc/my-role/my-role.conf - owner: root - group: root - mode: '0644' - notify: restart my-role - tags: - - my-role - - config +- name: Установка пакетов (пример) + package: + name: "{{ my_role_packages | default([]) }}" + state: present + when: my_role_packages is defined ``` +### 4. Настройка defaults + **`roles/my-role/defaults/main.yml`:** ```yaml --- @@ -123,172 +132,104 @@ touch roles/my-role/README.md # Автор: Сергей Антропов # Сайт: https://devops.org.ru -# Основные настройки +my_role_packages: [] my_role_enabled: true -my_role_packages: - - nginx - - curl - -# Конфигурация -my_role_config_file: /etc/my-role/my-role.conf -my_role_log_level: info ``` -### 3. Тестирование роли +### 5. Тестирование роли ```bash -# Lint проверка -make role lint +# Проверка синтаксиса +make role lint my-role -# Тестирование в Docker +# Тестирование с минимальным preset make role test minimal - -# Тестирование с custom preset -make role test my-custom-preset ``` -## 🚀 Развертывание на продакшн +### 6. Добавление роли в deploy.yml -### 1. Настройка инвентори +Роль автоматически добавляется в `roles/deploy.yml` при создании. -**`inventory/hosts.ini`:** -```ini -# Продакшн серверы -[web_servers] -web1.example.com ansible_host=192.168.1.10 -web2.example.com ansible_host=192.168.1.11 +## 📚 Доступные роли -[db_servers] -db1.example.com ansible_host=192.168.1.20 -db2.example.com ansible_host=192.168.1.21 +### Docker -[all:vars] -ansible_user=devops -ansible_ssh_private_key_file=~/.ssh/id_rsa -ansible_ssh_common_args='-o StrictHostKeyChecking=no' -``` - -### 2. Настройка SSH ключей +Универсальная роль для установки Docker и Docker Compose. ```bash -# Генерация SSH ключа -ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa - -# Копирование ключа на серверы -ssh-copy-id devops@web1.example.com -ssh-copy-id devops@web2.example.com +# Тестирование роли docker +make role lint docker +make role test docker ``` -### 3. Тестирование подключения +**Документация:** [roles/docker/README.md](../roles/docker/README.md) + +### DevOps + +Роль для установки и настройки инструментов DevOps. + +**Документация:** [roles/devops/README.md](../roles/devops/README.md) + +### Ping + +Простая роль для проверки ping. ```bash -# Проверка подключения -ansible all -i inventory/hosts.ini -m ping - -# Dry-run развертывания -make role deploy +# Тестирование роли ping +make role lint ping +make role test ping ``` -### 4. Развертывание +**Документация:** [roles/ping/README.md](../roles/ping/README.md) + +## 🎯 Preset система + +### Базовые preset'ы + +- **`default`** - Стандартный preset (2 хоста: Ubuntu + Debian) +- **`minimal`** - Минимальный preset (1 хост: Debian) +- **`test`** - Базовый тест (2 хоста) + +### Preset'ы по ОС + +- **Ubuntu**: `ubuntu20`, `ubuntu22`, `ubuntu24`, `ubuntu-all` +- **Debian**: `debian9`, `debian10`, `debian11`, `debian12`, `debian-all` +- **CentOS**: `centos7`, `centos8`, `centos9`, `centos-all` + +### Специализированные preset'ы + +- **`all-images`** - Все образы (16 хостов) +- **`multi-os`** - Multi-OS тестирование (8 хостов) +- **`docker-full`** - Docker тестирование (4 хоста) +- **`performance`** - Тест производительности (8 хостов) +- **`security`** - Тест безопасности (6 хостов) + +## 🔐 Работа с секретами + +### Инициализация Vault ```bash -# Развертывание на продакшн -make role deploy -# Подтвердить развертывание: y -``` - -## 🔐 Управление секретами - -### 1. Инициализация vault - -```bash -# Создание файла пароля +# Создание файла с паролем make vault init - -# Создание файла секретов -make vault create ``` -### 2. Работа с секретами +### Создание и редактирование секретов ```bash -# Редактирование секретов +# Создание нового секрета +make vault create + +# Редактирование существующего make vault edit -# Просмотр секретов +# Просмотр секрета make vault show - -# Шифрование файла -make vault encrypt ``` -## 🏗️ CI/CD интеграция +## 📖 Дополнительная документация -### 1. GitHub Actions - -```yaml -# .github/workflows/ansible-test.yml -name: Ansible Testing -on: [push, pull_request] - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Run tests - run: make role test -``` - -### 2. Azure DevOps - -```yaml -# azure-pipelines.yml -trigger: -- main -pool: - vmImage: 'ubuntu-latest' -stages: -- stage: Test - jobs: - - job: TestJob - steps: - - script: make role test -``` - -## 📊 Мониторинг и диагностика - -### 1. Диагностика Docker - -```bash -# Диагностика buildx проблем -make docker diagnose - -# Проверка builder'а -make docker setup-builder - -# Сброс builder'а при проблемах -make docker reset-builder -``` - -### 2. Логи и отчеты - -```bash -# Просмотр логов контейнера -docker logs ansible-controller - -# Вход в контейнер для отладки -docker exec -it ansible-controller bash -``` - -## 🎯 Следующие шаги - -1. **Изучите документацию** по [созданию ролей](creating-roles.md) -2. **Настройте CI/CD** по [инструкции](cicd-setup.md) -3. **Изучите Docker образы** в [dockerfiles/README.md](../dockerfiles/README.md) -4. **Настройте мониторинг** по [руководству](monitoring.md) - ---- - -**Автор:** Сергей Антропов -**Сайт:** https://devops.org.ru +- [Руководство по Molecule](molecule-guide.md) +- [Создание ролей](creating-roles.md) +- [Docker образы](dockerfiles.md) +- [Preset система](presets-by-os.md) +- [Настройка CI/CD](cicd-setup.md)