- Обновлен README.md с новыми возможностями COD preset и роли devops - Добавлена документация по COD preset (docs/cod-preset.md) - Добавлена документация по роли devops (docs/devops-role.md) - Обновлена документация по ARM64 поддержке (docs/arm64-support.md) - Обновлены примеры использования (docs/examples.md) - Исправлен Dockerfile для RHEL с Python 3.11 из EPEL - Обновлен COD preset с 6 контейнерами (Ubuntu + Debian + Alt + Astra + CentOS + RHEL) - Улучшена роль devops с поддержкой российских ОС - Добавлен CHANGELOG.md с историей изменений - Все изменения протестированы на ARM64 архитектуре
		
			
				
	
	
		
			267 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			267 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # COD Preset - Тестирование российских и зарубежных ОС
 | ||
| 
 | ||
| **Автор:** Сергей Антропов  
 | ||
| **Сайт:** https://devops.org.ru  
 | ||
| **Версия:** 3.0.0
 | ||
| 
 | ||
| ## 📋 Описание
 | ||
| 
 | ||
| COD preset (Code of Operations Development) - это специализированный пресет для тестирования Ansible ролей на российских и зарубежных операционных системах с поддержкой ARM64 архитектуры.
 | ||
| 
 | ||
| ## 🎯 Цель
 | ||
| 
 | ||
| Обеспечить комплексное тестирование инфраструктурных решений на:
 | ||
| - **Зарубежных ОС**: Ubuntu, Debian, CentOS, RHEL
 | ||
| - **Российских ОС**: Alt Linux, Astra Linux
 | ||
| - **Архитектура**: ARM64 (нативная поддержка)
 | ||
| 
 | ||
| ## 🖥️ Поддерживаемые ОС
 | ||
| 
 | ||
| ### Зарубежные ОС
 | ||
| - **Ubuntu 22.04 LTS** - популярная Linux дистрибуция
 | ||
| - **Debian 12** - стабильная основа для многих дистрибуций
 | ||
| - **CentOS Stream 9** - community версия RHEL
 | ||
| - **RHEL 8** - корпоративная Linux платформа
 | ||
| 
 | ||
| ### Российские ОС
 | ||
| - **Alt Linux 10** - российская Linux дистрибуция
 | ||
| - **Astra Linux 1.7** - защищенная ОС для государственных организаций
 | ||
| 
 | ||
| ## 🚀 Использование
 | ||
| 
 | ||
| ### Базовое тестирование
 | ||
| 
 | ||
| ```bash
 | ||
| # Запуск тестирования с COD preset
 | ||
| make role test cod
 | ||
| 
 | ||
| # Проверка статуса контейнеров
 | ||
| docker ps -a --filter "network=labnet" --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"
 | ||
| ```
 | ||
| 
 | ||
| ### Тестирование конкретной роли
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование роли devops
 | ||
| make role test cod
 | ||
| 
 | ||
| # Тестирование роли docker
 | ||
| make role test cod
 | ||
| ```
 | ||
| 
 | ||
| ### Проверка результатов
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка пользователя devops на всех хостах
 | ||
| docker exec -it ubuntu1 id devops
 | ||
| docker exec -it debian1 id devops
 | ||
| docker exec -it alt1 id devops
 | ||
| docker exec -it astra1 id devops
 | ||
| docker exec -it centos1 id devops
 | ||
| docker exec -it rhel1 id devops
 | ||
| 
 | ||
| # Проверка SSH ключей
 | ||
| docker exec -it ubuntu1 cat /home/devops/.ssh/authorized_keys
 | ||
| docker exec -it alt1 cat /home/devops/.ssh/authorized_keys
 | ||
| ```
 | ||
| 
 | ||
| ## 📊 Конфигурация
 | ||
| 
 | ||
| ### Структура preset
 | ||
| 
 | ||
| ```yaml
 | ||
| ---
 | ||
| # COD пресет с 6 контейнерами (Ubuntu + Debian + Alt + Astra + CentOS + RHEL)
 | ||
| docker_network: labnet
 | ||
| generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
 | ||
| 
 | ||
| # Образы для ARM64
 | ||
| images:
 | ||
|   ubuntu: "inecs/ansible-lab:ubuntu22-latest"
 | ||
|   debian: "inecs/ansible-lab:debian12-latest"
 | ||
|   alt: "inecs/ansible-lab:alt10-latest"
 | ||
|   astra: "inecs/ansible-lab:astra-linux-arm64-latest"
 | ||
|   centos: "inecs/ansible-lab:centos9-latest"
 | ||
|   rhel: "inecs/ansible-lab:rhel-latest"
 | ||
| 
 | ||
| # ARM64 платформа
 | ||
| platform: "linux/arm64"
 | ||
| docker_platform: "linux/arm64"
 | ||
| 
 | ||
| # Хосты
 | ||
| hosts:
 | ||
|   - name: ubuntu1
 | ||
|     family: ubuntu
 | ||
|     groups: [cod, ubuntu]
 | ||
|     platform: "linux/arm64"
 | ||
|   # ... остальные хосты
 | ||
| ```
 | ||
| 
 | ||
| ### Группы хостов
 | ||
| 
 | ||
| - **`cod`** - все хосты COD preset
 | ||
| - **`ubuntu`** - Ubuntu хосты
 | ||
| - **`debian`** - Debian хосты
 | ||
| - **`alt`** - Alt Linux хосты
 | ||
| - **`astra`** - Astra Linux хосты
 | ||
| - **`centos`** - CentOS хосты
 | ||
| - **`rhel`** - RHEL хосты
 | ||
| 
 | ||
| ## 🔧 Особенности
 | ||
| 
 | ||
| ### ARM64 поддержка
 | ||
| 
 | ||
| - **Нативная архитектура** - все контейнеры собираются для ARM64
 | ||
| - **Оптимальная производительность** - без эмуляции
 | ||
| - **Совместимость** - работает на Apple Silicon и ARM серверах
 | ||
| 
 | ||
| ### Российские ОС
 | ||
| 
 | ||
| - **Alt Linux** - полная поддержка пакетного менеджера apt
 | ||
| - **Astra Linux** - совместимый образ на базе Debian
 | ||
| - **Автоматическое определение** ОС в роли devops
 | ||
| 
 | ||
| ### Универсальная роль devops
 | ||
| 
 | ||
| Роль автоматически определяет тип ОС и применяет соответствующие конфигурации:
 | ||
| 
 | ||
| ```yaml
 | ||
| # Для российских ОС
 | ||
| devops_russian_os_config:
 | ||
|   clearlinux:  # Astra Linux
 | ||
|     package_manager: "apt"
 | ||
|     sudo_group: "sudo"
 | ||
|     additional_groups: ["sudo", "docker", "systemd-journal"]
 | ||
|   altlinux:    # Alt Linux
 | ||
|     package_manager: "apt"
 | ||
|     sudo_group: "sudo"
 | ||
|     additional_groups: ["sudo", "docker", "systemd-journal"]
 | ||
| ```
 | ||
| 
 | ||
| ## 📈 Примеры использования
 | ||
| 
 | ||
| ### Тестирование инфраструктурных ролей
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование роли мониторинга
 | ||
| make role test cod
 | ||
| 
 | ||
| # Проверка установки пакетов на разных ОС
 | ||
| docker exec -it ubuntu1 dpkg -l | grep monitoring
 | ||
| docker exec -it centos1 rpm -qa | grep monitoring
 | ||
| ```
 | ||
| 
 | ||
| ### Тестирование безопасности
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование роли безопасности
 | ||
| make role test cod
 | ||
| 
 | ||
| # Проверка настроек безопасности
 | ||
| docker exec -it astra1 cat /etc/ssh/sshd_config | grep PermitRootLogin
 | ||
| docker exec -it rhel1 cat /etc/ssh/sshd_config | grep PermitRootLogin
 | ||
| ```
 | ||
| 
 | ||
| ### Тестирование контейнеризации
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование роли Docker
 | ||
| make role test cod
 | ||
| 
 | ||
| # Проверка Docker на разных ОС
 | ||
| docker exec -it ubuntu1 docker --version
 | ||
| docker exec -it alt1 docker --version
 | ||
| ```
 | ||
| 
 | ||
| ## 🐛 Диагностика
 | ||
| 
 | ||
| ### Проверка контейнеров
 | ||
| 
 | ||
| ```bash
 | ||
| # Статус всех контейнеров
 | ||
| docker ps -a --filter "network=labnet"
 | ||
| 
 | ||
| # Логи конкретного контейнера
 | ||
| docker logs ubuntu1
 | ||
| docker logs alt1
 | ||
| docker logs astra1
 | ||
| ```
 | ||
| 
 | ||
| ### Проверка сети
 | ||
| 
 | ||
| ```bash
 | ||
| # Информация о сети
 | ||
| docker network inspect labnet
 | ||
| 
 | ||
| # Проверка связности
 | ||
| docker exec -it ubuntu1 ping -c 3 debian1
 | ||
| docker exec -it alt1 ping -c 3 astra1
 | ||
| ```
 | ||
| 
 | ||
| ### Проверка роли devops
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка пользователя
 | ||
| docker exec -it ubuntu1 id devops
 | ||
| docker exec -it alt1 id devops
 | ||
| 
 | ||
| # Проверка групп
 | ||
| docker exec -it ubuntu1 groups devops
 | ||
| docker exec -it centos1 groups devops
 | ||
| 
 | ||
| # Проверка sudo прав
 | ||
| docker exec -it ubuntu1 sudo -l -U devops
 | ||
| docker exec -it rhel1 sudo -l -U devops
 | ||
| ```
 | ||
| 
 | ||
| ## 🔄 Обновление
 | ||
| 
 | ||
| ### Обновление образов
 | ||
| 
 | ||
| ```bash
 | ||
| # Пересборка всех образов
 | ||
| make docker rebuild
 | ||
| 
 | ||
| # Пересборка конкретного образа
 | ||
| make docker build-image IMAGE=astra-linux-arm64
 | ||
| make docker build-image IMAGE=redos-arm64
 | ||
| ```
 | ||
| 
 | ||
| ### Обновление preset
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка синтаксиса
 | ||
| make presets info PRESET=cod
 | ||
| 
 | ||
| # Тестирование обновленного preset
 | ||
| make role test cod
 | ||
| ```
 | ||
| 
 | ||
| ## 📚 Связанная документация
 | ||
| 
 | ||
| - **[examples.md](examples.md)** - Примеры использования
 | ||
| - **[creating-roles.md](creating-roles.md)** - Создание ролей
 | ||
| - **[universal-testing.md](universal-testing.md)** - Универсальное тестирование
 | ||
| - **[presets-by-os.md](presets-by-os.md)** - Presets по ОС
 | ||
| 
 | ||
| ## 🎉 Заключение
 | ||
| 
 | ||
| COD preset обеспечивает:
 | ||
| 
 | ||
| 1. **Комплексное тестирование** на российских и зарубежных ОС
 | ||
| 2. **ARM64 поддержку** для оптимальной производительности
 | ||
| 3. **Универсальность** - одна роль работает на всех ОС
 | ||
| 4. **Автоматизацию** - минимальные настройки для максимального результата
 | ||
| 5. **Надежность** - проверка совместимости с реальными системами
 | ||
| 
 | ||
| Используйте COD preset для:
 | ||
| - Тестирования инфраструктурных решений
 | ||
| - Проверки совместимости с российскими ОС
 | ||
| - Разработки универсальных Ansible ролей
 | ||
| - Валидации безопасности на разных платформах
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| **Автор:** Сергей Антропов  
 | ||
| **Сайт:** https://devops.org.ru
 |