diff --git a/README.md b/README.md index 4d0bb32..563b6a8 100644 --- a/README.md +++ b/README.md @@ -129,11 +129,27 @@ Preset система позволяет быстро выбрать окруж ### Доступные preset'ы -| Preset | Описание | Хосты | -|--------|----------|-------| -| `default` | Стандартный preset | 2 хоста (Ubuntu + CentOS) | -| `minimal` | Минимальный preset | 1 хост (Debian) | -| `mytest` | Кастомный preset | 3 хоста | +#### Базовые +- **`default`** - Стандартный preset (2 хоста: Ubuntu + Debian) +- **`minimal`** - Минимальный preset (1 хост: Debian) +- **`test`** - Базовый тест (2 хоста) +- **`stable`** - Стабильные ОС (4 хоста) +- **`standart`** - Стандартный набор (4 хоста) +- **`mytest`** - Кастомный preset (3 хоста) + +#### По ОС +- **Ubuntu**: `ubuntu20`, `ubuntu22`, `ubuntu24`, `ubuntu-all` (все версии) +- **Debian**: `debian9`, `debian10`, `debian11`, `debian12`, `debian-all` (все версии) +- **CentOS**: `centos7`, `centos8`, `centos9`, `centos-all` (все версии) + +#### Специализированные +- **`all-images`** - Все образы (16 хостов) - полное покрытие всех ОС +- **`multi-os`** - Multi-OS тестирование (8 хостов разных ОС) +- **`docker-full`** - Docker тестирование (4 хоста) +- **`docker-test`** - Базовое Docker тестирование (2 хоста) +- **`etcd-patroni`** - ETCD + Patroni кластер (4 хоста) +- **`performance`** - Тест производительности (8 хостов) +- **`security`** - Тест безопасности (6 хостов) ### Создание своего preset @@ -447,7 +463,7 @@ make custom-images # справка по собственным ### Docker образы -- **[dockerfiles/README.md](dockerfiles/README.md)** - Информация об образах +- **[docs/dockerfiles.md](docs/dockerfiles.md)** - Полная документация по Docker образам ## 🐳 Docker образы diff --git a/docs/dockerfiles.md b/docs/dockerfiles.md new file mode 100644 index 0000000..35af099 --- /dev/null +++ b/docs/dockerfiles.md @@ -0,0 +1,410 @@ +# Docker образы AnsibleLab + +**Автор:** Сергей Антропов +**Сайт:** https://devops.org.ru +**Версия:** 2.0.0 + +## 🐳 Обзор + +AnsibleLab использует предварительно собранные Docker образы для различных операционных систем с полной поддержкой systemd. Все образы поддерживают multi-arch сборку и автоматически публикуются в Docker Hub под namespace `inecs/ansible-lab`. + +## 📁 Структура dockerfiles/ + +``` +dockerfiles/ +├── ansible-controller/ # Ansible контроллер +├── alt-linux/ # ALT Linux P9 +├── astra-linux/ # Astra Linux 1.7 +├── redos/ # RED OS 9 +├── rhel/ # Red Hat Enterprise Linux 8 +├── centos7/ # CentOS 7 +├── centos8/ # CentOS 8 +├── centos9/ # CentOS Stream 9 +├── alma/ # AlmaLinux 8 +├── rocky/ # Rocky Linux 8 +├── ubuntu20/ # Ubuntu 20.04 LTS +├── ubuntu22/ # Ubuntu 22.04 LTS +├── ubuntu24/ # Ubuntu 24.04 LTS +├── debian9/ # Debian 9 Stretch +├── debian10/ # Debian 10 Buster +├── debian11/ # Debian 11 Bullseye +└── debian12/ # Debian 12 Bookworm +``` + +## 🚀 Доступные образы + +### ansible-controller + +**Базовый образ:** `ubuntu:22.04` +**Теги:** `inecs/ansible-lab:ansible-controller-latest` +**Платформы:** linux/amd64, linux/arm64 + +Ansible контроллер с предустановленными коллекциями и инструментами для разработки и тестирования. + +#### Компоненты: +- Ansible Core с последними коллекциями +- Docker CLI для работы с контейнерами +- kubectl для управления Kubernetes +- Helm для управления пакетами Kubernetes +- Kind для локального Kubernetes +- yq для работы с YAML +- jq для работы с JSON +- Molecule для тестирования ролей + +#### Предустановленные коллекции: +```yaml +collections: + - name: community.docker + version: ">=3.0.0" + - name: community.general + version: ">=7.0.0" + - name: ansible.posix + version: ">=1.5.4" + - name: kubernetes.core + version: ">=2.0.0" +``` + +#### Использование: +```bash +# Запуск контроллера +docker run -it --rm \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v $(pwd):/workspace \ + -w /workspace \ + inecs/ansible-lab:ansible-controller-latest + +# Выполнение команды +docker run --rm \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v $(pwd):/workspace \ + -w /workspace \ + inecs/ansible-lab:ansible-controller-latest \ + ansible-playbook site.yml +``` + +### Ubuntu + +**Базовые образы:** +- `ubuntu:20.04` → `inecs/ansible-lab:ubuntu20-latest` +- `ubuntu:22.04` → `inecs/ansible-lab:ubuntu22-latest` +- `ubuntu:24.04` → `inecs/ansible-lab:ubuntu24-latest` + +**Платформы:** linux/amd64, linux/arm64 + +Ubuntu LTS с systemd и Docker. + +#### Компоненты: +- systemd для управления сервисами +- Docker CE с Docker Compose Plugin +- Python 3 с pip +- Пользователь ansible с sudo правами +- Основные утилиты (curl, wget, git, vim, nano, htop, tree, jq) + +#### Использование: +```bash +docker run -d --privileged \ + --name ubuntu-test \ + -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ + --tmpfs /run --tmpfs /run/lock \ + --cap-add SYS_ADMIN \ + inecs/ansible-lab:ubuntu22-latest +``` + +### Debian + +**Базовые образы:** +- `debian:9` → `inecs/ansible-lab:debian9-latest` +- `debian:10` → `inecs/ansible-lab:debian10-latest` +- `debian:11` → `inecs/ansible-lab:debian11-latest` +- `debian:bookworm` → `inecs/ansible-lab:debian12-latest` + +**Платформы:** linux/amd64, linux/arm64 + +Debian с systemd и Docker. + +#### Компоненты: +- systemd для управления сервисами +- Docker CE с Docker Compose Plugin +- Python 3 с pip +- Пользователь ansible с sudo правами +- Основные утилиты + +#### Использование: +```bash +docker run -d --privileged \ + --name debian-test \ + -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ + --tmpfs /run --tmpfs /run/lock \ + --cap-add SYS_ADMIN \ + inecs/ansible-lab:debian12-latest +``` + +### CentOS + +**Базовые образы:** +- `centos:7` → `inecs/ansible-lab:centos7-latest` +- `quay.io/centos/centos:8` → `inecs/ansible-lab:centos8-latest` +- `quay.io/centos/centos:stream9` → `inecs/ansible-lab:centos9-latest` + +**Платформы:** linux/amd64, linux/arm64 + +CentOS с systemd и Docker. + +#### Компоненты: +- systemd для управления сервисами +- Docker CE с Docker Compose Plugin +- Python 3 с pip +- Пользователь ansible с sudo правами +- Основные утилиты + +#### Использование: +```bash +docker run -d --privileged \ + --name centos-test \ + -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ + --tmpfs /run --tmpfs /run/lock \ + --cap-add SYS_ADMIN \ + inecs/ansible-lab:centos9-latest +``` + +### AlmaLinux + +**Базовый образ:** `almalinux:8` +**Тег:** `inecs/ansible-lab:alma-latest` +**Платформы:** linux/amd64, linux/arm64 + +AlmaLinux 8 с systemd и Docker. + +### Rocky Linux + +**Базовый образ:** `rockylinux:8` +**Тег:** `inecs/ansible-lab:rocky-latest` +**Платформы:** linux/amd64, linux/arm64 + +Rocky Linux 8 с systemd и Docker. + +### Red Hat Enterprise Linux + +**Базовый образ:** `registry.access.redhat.com/ubi8/ubi` +**Тег:** `inecs/ansible-lab:rhel-latest` +**Платформы:** linux/amd64, linux/arm64 + +Red Hat Enterprise Linux 8 с systemd и Docker. + +### ALT Linux + +**Базовый образ:** `altlinux/p9` +**Тег:** `inecs/ansible-lab:alt-linux-latest` +**Платформы:** linux/amd64 (ограничение базового образа) + +ALT Linux P9 с systemd и Docker. + +### Astra Linux + +**Базовый образ:** `registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2` +**Тег:** `inecs/ansible-lab:astra-linux-latest` +**Платформы:** linux/amd64 (ограничение базового образа) + +Astra Linux 1.7 с systemd и Docker. + +### RED OS + +**Базовый образ:** `registry.red-soft.ru/ubi7/ubi` +**Тег:** `inecs/ansible-lab:redos-latest` +**Платформы:** linux/amd64 (ограничение базового образа) + +RED OS 9 с systemd и Docker. + +## 🔨 Сборка образов + +### Сборка всех образов + +```bash +# Собрать все образы (multi-arch) +make docker build + +# Пересборка с очисткой кеша +make docker rebuild + +# Сборка конкретного образа +make docker build-image IMAGE=centos7 +``` + +### Поддерживаемые платформы + +По умолчанию все образы собираются для следующих платформ: +- `linux/amd64` - 64-bit x86 +- `linux/arm64` - 64-bit ARM + +Дополнительные платформы (опционально): +- `linux/riscv64` - RISC-V 64-bit +- `linux/ppc64le` - PowerPC 64-bit LE +- `linux/s390x` - IBM Z +- `linux/386` - 32-bit x86 +- `linux/arm/v7` - ARM v7 +- `linux/arm/v6` - ARM v6 + +### Тегирование + +Все образы автоматически получают теги: +- `inecs/ansible-lab:<имя>-<версия>` - версионированный тег +- `inecs/ansible-lab:<имя>-latest` - последняя версия + +Например: +- `inecs/ansible-lab:centos9-9.0` +- `inecs/ansible-lab:centos9-latest` +- `inecs/ansible-lab:ubuntu22-22.04` +- `inecs/ansible-lab:ubuntu22-latest` + +## 📤 Публикация в Docker Hub + +### Требования + +1. Авторизация в Docker Hub: +```bash +docker login +``` + +2. Настройка билд-ксер (buildx) для multi-arch: +```bash +make docker setup-builder +``` + +### Публикация + +```bash +# Публикация всех образов +make docker push + +# Публикация конкретного образа +make docker build-image IMAGE=centos7 +# (публикуется автоматически при сборке) +``` + +## 🧪 Использование в Molecule + +### Preset конфигурация + +```yaml +# molecule/presets/my-preset.yml +images: + ubuntu22: "inecs/ansible-lab:ubuntu22-latest" + centos9: "inecs/ansible-lab:centos9-latest" + debian12: "inecs/ansible-lab:debian12-latest" + +hosts: + - name: web1 + family: ubuntu22 + groups: [web, test] + - name: db1 + family: centos9 + groups: [database, test] +``` + +### Тестирование с preset + +```bash +# Использование preset в тестах +MOLECULE_PRESET=my-preset make role test + +# Или напрямую +make role test my-preset +``` + +## 🔧 Особенности образов + +### Поддержка systemd + +Все образы настроены для работы с systemd в контейнере: + +```bash +docker run -d --privileged \ + --tmpfs /run --tmpfs /run/lock \ + -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ + --cap-add SYS_ADMIN \ + inecs/ansible-lab:ubuntu22-latest +``` + +### Настройки по умолчанию + +- **Пользователь ansible**: пароль `ansible`, sudo без пароля +- **SSH доступ**: включен для пользователя ansible +- **systemd**: multi-user.target по умолчанию +- **Временные файловые системы**: `/run`, `/run/lock` +- **Volumes**: `/sys/fs/cgroup` + +### Docker внутри Docker + +Все образы поддерживают запуск Docker внутри контейнера: + +```bash +docker run -d --privileged \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v /sys/fs/cgroup:/sys/fs/cgroup:rw \ + --tmpfs /run --tmpfs /run/lock \ + --cap-add SYS_ADMIN \ + inecs/ansible-lab:centos9-latest +``` + +## 📋 Матрица совместимости + +| Образ | Платформы | systemd | Docker | Python 3 | +|-------|-----------|---------|--------|----------| +| ansible-controller | amd64, arm64 | ✅ | ✅ | ✅ | +| ubuntu20/22/24 | amd64, arm64 | ✅ | ✅ | ✅ | +| debian9/10/11/12 | amd64, arm64 | ✅ | ✅ | ✅ | +| centos7/8/9 | amd64, arm64 | ✅ | ✅ | ✅ | +| alma | amd64, arm64 | ✅ | ✅ | ✅ | +| rocky | amd64, arm64 | ✅ | ✅ | ✅ | +| rhel | amd64, arm64 | ✅ | ✅ | ✅ | +| alt-linux | amd64 | ✅ | ✅ | ✅ | +| astra-linux | amd64 | ✅ | ✅ | ✅ | +| redos | amd64 | ✅ | ✅ | ✅ | + +## 🛠️ Управление образами + +### Проверка наличия образов + +```bash +# Проверка локальных образов +docker images | grep inecs/ansible-lab + +# Проверка в Molecule +make custom-images check +``` + +### Обновление образов + +```bash +# Загрузить свежие образы +make docker pull + +# Пересобрать с обновлениями +make docker rebuild + +# Полное обновление +make docker update +``` + +### Очистка + +```bash +# Удалить локальные образы +make docker clean + +# Полная очистка +make docker purge +``` + +## 📚 Дополнительная информация + +- [Структура dockerfiles/](../dockerfiles/) +- [Makefile команды](../README.md#-управление-docker-образами) +- [Preset система](molecule-guide.md#preset-система) +- [CI/CD конфигурация](cicd-setup.md) + +## 🔗 Полезные ссылки + +- **Docker Hub**: https://hub.docker.com/r/inecs/ansible-lab +- **AnsibleLab**: https://devops.org.ru +- **Документация**: https://github.com/AnsibleLab/docs