docs: добавлена полная документация по Molecule и Docker образам
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled

- Создан docs/dockerfiles.md с полной документацией по всем Docker образам
- Обновлен раздел Preset система в README с полным списком preset'ов
- Добавлены категории preset'ов: базовые, по ОС, специализированные
- Описаны все 25+ preset'ов из molecule/presets/
- Добавлена ссылка на docs/dockerfiles.md в основной README
- Документация по Docker образам перенесена из dockerfiles/README.md в docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
Сергей Антропов
2025-10-26 01:11:30 +03:00
parent 3d3a28432c
commit 65137093f4
2 changed files with 432 additions and 6 deletions

410
docs/dockerfiles.md Normal file
View File

@@ -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