diff --git a/roles/devops/QUICKSTART.md b/roles/devops/QUICKSTART.md index a349008..ee40527 100644 --- a/roles/devops/QUICKSTART.md +++ b/roles/devops/QUICKSTART.md @@ -1,42 +1,76 @@ # Быстрый старт - Роль devops -## Автор -Сергей Антропов -Сайт: https://devops.org.ru +**Автор:** Сергей Антропов +**Сайт:** https://devops.org.ru +**Версия:** 2.0.0 ## Что делает роль -Роль `devops` автоматически: +Роль автоматически: 1. ✅ Создает пользователя `devops` 2. ✅ Генерирует безопасный пароль (30 символов) 3. ✅ Настраивает SSH доступ по ключу 4. ✅ Добавляет права sudo без пароля 5. ✅ Создает домашнюю директорию 6. ✅ Автоматически определяет ОС и настраивает группы -7. ✅ Поддерживает все ОС из dockerfiles (Ubuntu, Debian, RHEL, CentOS, Rocky, AlmaLinux, Astra Linux, ALT Linux, RedOS) +7. ✅ Поддерживает все ОС (Ubuntu, Debian, RHEL, CentOS, Rocky, AlmaLinux, Astra Linux, ALT Linux, RedOS) ## Быстрый запуск -### 1. Базовое использование +### Тестирование роли + ```bash -ansible-playbook -i inventory/hosts.ini roles/deploy.yml +# Lint проверка +make role lint devops + +# Тестирование с minimal preset +make role test minimal + +# Тестирование конкретной роли +make role test devops ``` -### 2. С SSH ключом из vault +### Базовое использование + ```bash +# Запуск всех ролей через roles/deploy.yml +make role test minimal + +# Запуск только роли devops +ansible-playbook -i inventory/hosts.ini roles/devops/playbook.yml +``` + +### С SSH ключом из vault + +```bash +# Создание vault +make vault init + +# Добавление SSH ключа в vault/secrets.yml +# Затем запуск с vault паролем ansible-playbook -i inventory/hosts.ini roles/deploy.yml \ --ask-vault-pass \ -e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}" ``` -### 3. Только роль devops -```bash -ansible-playbook -i inventory/hosts.ini roles/devops/playbook.yml -``` - ## Проверка результата -После выполнения проверьте: +### В тестовых контейнерах + +```bash +# Просмотр логов +docker logs $(docker ps -aq --filter "network=labnet" | head -1) + +# Вход в контейнер +docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) bash + +# Проверка пользователя +id devops +sudo -l -U devops +ls -la /home/devops/.ssh/ +``` + +### В продакшн окружении ```bash # Проверка пользователя @@ -51,13 +85,25 @@ ansible all -i inventory/hosts.ini -m shell -a "ls -la /home/devops/.ssh/" ## Настройка SSH ключа -1. Добавьте ваш SSH ключ в `vault/secrets.yml`: +### 1. Добавление ключа в vault + +Создайте/отредактируйте `vault/secrets.yml`: + +```bash +# Редактирование vault +make vault edit +# Имя файла: secrets +``` + +Добавьте SSH ключ: + ```yaml devops_ssh_keys: public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... your@email.com" ``` -2. Запустите playbook с передачей ключа: +### 2. Запуск с SSH ключом + ```bash ansible-playbook -i inventory/hosts.ini roles/deploy.yml \ --ask-vault-pass \ @@ -67,6 +113,7 @@ ansible-playbook -i inventory/hosts.ini roles/deploy.yml \ ## Кастомизация ### Изменить имя пользователя + ```yaml vars: devops_user: @@ -75,6 +122,7 @@ vars: ``` ### Изменить длину пароля + ```yaml vars: devops_password: @@ -82,41 +130,98 @@ vars: ``` ### Добавить группы + ```yaml vars: devops_user: groups: ["sudo", "docker", "wheel", "adm"] ``` +### Использование в playbook + +```yaml +- hosts: all + become: true + vars: + devops_user: + name: "admin" + groups: ["sudo", "docker"] + devops_password: + length: 40 + roles: + - devops +``` + ## Безопасность - 🔒 Пароль генерируется автоматически и не сохраняется в логах - 🔑 SSH доступ только по ключу (если настроен) - 🛡️ Пользователь добавлен в sudoers с правами NOPASSWD - 📁 SSH директория имеет правильные права доступа (700) +- 🔐 Пароль содержит минимум 4 символа каждого типа + +## Поддерживаемые ОС + +- ✅ Ubuntu 20.04, 22.04, 24.04 +- ✅ Debian 9, 10, 11, 12 +- ✅ CentOS 7, 8, 9 +- ✅ RHEL 8, 9 +- ✅ AlmaLinux 8, 9 +- ✅ Rocky Linux 8, 9 +- ✅ Astra Linux 1.7 +- ✅ ALT Linux P9 +- ✅ RED OS 9 ## Troubleshooting ### Проблема: Пользователь не создан + ```bash # Проверьте права sudo -ansible all -i inventory/hosts.ini -m shell -a "sudo whoami" +docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo whoami ``` ### Проблема: SSH не работает + ```bash # Проверьте права на SSH директорию -ansible all -i inventory/hosts.ini -m shell -a "ls -la /home/devops/.ssh/" +docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) ls -la /home/devops/.ssh/ ``` ### Проблема: Sudo не работает + ```bash # Проверьте sudoers файл -ansible all -i inventory/hosts.ini -m shell -a "sudo visudo -c" +docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo visudo -c ``` -## Поддержка +## Теги -- 📧 Email: через сайт https://devops.org.ru -- 📖 Документация: `roles/devops/README.md` +Роль поддерживает следующие теги: + +- `devops` - основная функциональность +- `user-management` - управление пользователями +- `security` - настройки безопасности +- `ssh` - SSH конфигурация +- `sudo` - настройки sudo + +Пример использования: + +```bash +# Только создание пользователя +ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags devops + +# Только SSH настройка +ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags ssh +``` + +## Дополнительная информация + +- 📖 Полная документация: `roles/devops/README.md` - 🧪 Тесты: `roles/devops/tests/test.yml` +- 📝 Примеры: `roles/devops/examples.yml` + +--- + +**Автор:** Сергей Антропов +**Сайт:** https://devops.org.ru diff --git a/roles/ping/QUICKSTART.md b/roles/ping/QUICKSTART.md index f148c3d..2af14c3 100644 --- a/roles/ping/QUICKSTART.md +++ b/roles/ping/QUICKSTART.md @@ -1,36 +1,68 @@ # Быстрый старт - Роль Ping +**Автор:** Сергей Антропов +**Сайт:** https://devops.org.ru +**Версия:** 2.0.0 + ## Что делает роль? -Роль выполняет ping yandex.ru из 5 пакетов и выводит результат. +Роль выполняет ping проверки подключения к сети. Отправляет пакеты на указанный хост и выводит результаты. ## Основные задачи роли: -1. **Выполнение ping** - отправляет 5 пакетов на yandex.ru -2. **Вывод результата** - показывает строки результата ping -3. **Статистика** - выводит статус и время выполнения +1. **Выполнение ping** - отправляет пакеты на указанный хост +2. **Вывод результата** - показывает результаты ping +3. **Статистика** - выводит статус выполнения 4. **Дополнительная информация** - выводит полный вывод команды -## Как использовать: +## Быстрый запуск -### Вариант 1: Использование в roles/deploy.yml (уже добавлено) +### Тестирование роли ```bash -# Запуск только роли ping -make role test minimal ping +# Lint проверка +make role lint ping -# Запуск всех ролей +# Тестирование с minimal preset (1 хост) make role test minimal + +# Тестирование с default preset (2 хоста) +make role test default + +# Тестирование конкретной роли +make role test ping ``` -### Вариант 2: Использование через roles/ping/playbook.yml +### Использование в roles/deploy.yml + +Роль уже добавлена в `roles/deploy.yml` и запускается вместе с остальными ролями: ```bash -# Запуск напрямую +# Запуск всех ролей +make role test minimal + +# Запуск только с тегом ping +ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags ping +``` + +### Отдельное использование + +```bash +# Прямой запуск playbook роли ansible-playbook -i inventory/hosts.ini roles/ping/playbook.yml ``` -### Вариант 3: Использование с кастомными параметрами +## Переменные + +| Переменная | По умолчанию | Описание | +|------------|--------------|----------| +| `ping_host` | `yandex.ru` | Целевой хост для ping | +| `ping_count` | `5` | Количество пакетов | +| `ping_interval` | `1` | Интервал между пакетами (сек) | +| `ping_timeout` | `10` | Таймаут (сек) | +| `ping_packet_size` | `64` | Размер пакета (байт) | + +### Использование с кастомными параметрами ```yaml - name: Тест ping @@ -40,27 +72,79 @@ ansible-playbook -i inventory/hosts.ini roles/ping/playbook.yml vars: ping_host: google.com ping_count: 10 + ping_timeout: 5 ``` -## Переменные: - -- `ping_host` - хост для ping (по умолчанию: yandex.ru) -- `ping_count` - количество пакетов (по умолчанию: 5) - -## Теги: +## Теги - `ping` - выполнение всех задач - `test` - тестирование - `debug` - отладочная информация - `stats` - статистика -## Пример вывода: +### Примеры использования тегов + +```bash +# Только ping задачи +ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags ping + +# Ping + debug +ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags "ping,debug" + +# Только статистика +ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags stats +``` + +## Пример вывода ``` ========================================= Результат ping yandex.ru ========================================= +PING yandex.ru (87.250.250.242) 64(92) bytes of data. +72 bytes from yandex.ru (87.250.250.242): icmp_seq=1 ttl=57 time=5.24 ms +72 bytes from yandex.ru (87.250.250.242): icmp_seq=2 ttl=57 time=5.12 ms +72 bytes from yandex.ru (87.250.250.242): icmp_seq=3 ttl=57 time=5.08 ms +72 bytes from yandex.ru (87.250.250.242): icmp_seq=4 ttl=57 time=5.18 ms +72 bytes from yandex.ru (87.250.250.242): icmp_seq=5 ttl=57 time=5.21 ms + +--- yandex.ru ping statistics --- +5 packets transmitted, 5 received, 0% packet loss, time 4006ms +rtt min/avg/max/mdev = 5.080/5.166/5.240/0.057 ms +========================================= Статус: УСПЕШНО -Время выполнения: 4.234 ========================================= ``` + +## Проверка результатов + +```bash +# Проверка через логи Molecule +docker logs $(docker ps -aq --filter "network=labnet" | head -1) + +# Вход в контейнер для проверки +docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) bash + +# Внутри контейнера +ping -c 5 yandex.ru +``` + +## Поддерживаемые ОС + +- ✅ Ubuntu 20.04, 22.04, 24.04 +- ✅ Debian 9, 10, 11, 12 +- ✅ CentOS 7, 8, 9 +- ✅ RHEL 8, 9 +- ✅ AlmaLinux 8, 9 +- ✅ Rocky Linux 8, 9 + +## Дополнительная информация + +- 📖 Полная документация: `roles/ping/README.md` +- 🧪 Тесты: `roles/ping/tests/test.yml` +- 📝 Примеры: `roles/ping/examples.yml` + +--- + +**Автор:** Сергей Антропов +**Сайт:** https://devops.org.ru