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
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:
410
docs/dockerfiles.md
Normal file
410
docs/dockerfiles.md
Normal 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
|
||||
Reference in New Issue
Block a user