12 KiB
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 контроллер
├── alt9/ # 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 для тестирования ролей
Предустановленные коллекции:
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"
Использование:
# Запуск контроллера
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-latestubuntu:22.04→inecs/ansible-lab:ubuntu22-latestubuntu:24.04→inecs/ansible-lab:ubuntu24-latest
Платформы: linux/amd64, linux/arm64
Ubuntu LTS с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты (curl, wget, git, vim, nano, htop, tree, jq)
- Примечание: Docker CE и Docker Compose не установлены (закомментированы в Dockerfile)
Использование:
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-latestdebian:10→inecs/ansible-lab:debian10-latestdebian:11→inecs/ansible-lab:debian11-latestdebian:bookworm→inecs/ansible-lab:debian12-latest
Платформы: linux/amd64, linux/arm64
Debian с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты
- Примечание: Docker CE и Docker Compose не установлены
Использование:
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-latestquay.io/centos/centos:8→inecs/ansible-lab:centos8-latestquay.io/centos/centos:stream9→inecs/ansible-lab:centos9-latest
Платформы: linux/amd64, linux/arm64
CentOS с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты
- Примечание: Docker CE и Docker Compose не установлены
Использование:
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.
Rocky Linux
Базовый образ: rockylinux:8
Тег: inecs/ansible-lab:rocky-latest
Платформы: linux/amd64, linux/arm64
Rocky Linux 8 с systemd.
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.
ALT Linux
Базовый образ: altlinux/p9
Тег: inecs/ansible-lab:alt9-latest
Платформы: linux/amd64 (ограничение базового образа)
ALT Linux P9 с systemd.
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.
RED OS
Базовый образ: registry.red-soft.ru/ubi7/ubi
Тег: inecs/ansible-lab:redos-latest
Платформы: linux/amd64 (ограничение базового образа)
RED OS 9 с systemd.
🔨 Сборка образов
Сборка всех образов
# Собрать все образы (multi-arch)
make docker build
# Пересборка с очисткой кеша
make docker rebuild
# Сборка конкретного образа
make docker build-image IMAGE=centos7
Поддерживаемые платформы
По умолчанию все образы собираются для следующих платформ:
linux/amd64- 64-bit x86linux/arm64- 64-bit ARM
Дополнительные платформы (опционально):
linux/riscv64- RISC-V 64-bitlinux/ppc64le- PowerPC 64-bit LElinux/s390x- IBM Zlinux/386- 32-bit x86linux/arm/v7- ARM v7linux/arm/v6- ARM v6
Тегирование
Все образы автоматически получают теги:
inecs/ansible-lab:<имя>-<версия>- версионированный тегinecs/ansible-lab:<имя>-latest- последняя версия
Например:
inecs/ansible-lab:centos9-9.0inecs/ansible-lab:centos9-latestinecs/ansible-lab:ubuntu22-22.04inecs/ansible-lab:ubuntu22-latest
📤 Публикация в Docker Hub
Требования
- Авторизация в Docker Hub:
docker login
- Настройка билд-ксер (buildx) для multi-arch:
make docker setup-builder
Публикация
# Публикация всех образов
make docker push
# Публикация конкретного образа
make docker build-image IMAGE=centos7
# (публикуется автоматически при сборке)
🧪 Использование в Molecule
Preset конфигурация
# 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
# Использование preset в тестах
MOLECULE_PRESET=my-preset make role test
# Или напрямую
make role test my-preset
🔧 Особенности образов
Поддержка systemd
Все образы настроены для работы с systemd в контейнере:
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 внутри контейнера:
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 | ✅ | ✅ | ✅ |
| alt9 | amd64 | ✅ | ✅ | ✅ |
| astra-linux | amd64 | ✅ | ✅ | ✅ |
| redos | amd64 | ✅ | ✅ | ✅ |
🛠️ Управление образами
Проверка наличия образов
# Проверка локальных образов
docker images | grep inecs/ansible-lab
# Проверка в Molecule
make custom-images check
Обновление образов
# Загрузить свежие образы
make docker pull
# Пересобрать с обновлениями
make docker rebuild
# Полное обновление
make docker update
Очистка
# Удалить локальные образы
make docker clean
# Полная очистка
make docker purge
📚 Дополнительная информация
🔗 Полезные ссылки
- Docker Hub: https://hub.docker.com/r/inecs/ansible-lab
- AnsibleLab: https://devops.org.ru
- Документация: https://github.com/AnsibleLab/docs