- Убраны пакеты: vim, jq, git, htop, tree из всех Dockerfile - Закомментированы установки Docker, Docker Compose, yq - Обновлен Rocky Linux до версии 9 с Python 3 - Исправлена проблема с passlib в ansible-controller - Оставлены только необходимые пакеты: systemd, curl, wget, nano, python3, sudo
Docker образы для универсальной системы тестирования AnsibleLab
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 2.0.0
🐳 Обзор
Эта директория содержит Docker образы для различных операционных систем и компонентов, используемых в универсальной системе тестирования Ansible ролей. Все образы поддерживают multi-arch сборку (amd64, arm64, riscv64, ppc64le, s390x, 386, arm/v7, arm/v6) и автоматически публикуются в Docker Hub.
📁 Структура
dockerfiles/
├── ansible-controller/ # Ansible контроллер с предустановленными коллекциями
├── alt-linux/ # ALT Linux с systemd
├── astra-linux/ # Astra Linux с systemd
├── redos/ # RED OS с systemd
├── rhel/ # Red Hat Enterprise Linux с systemd
├── centos/ # CentOS Stream с systemd
├── alma/ # AlmaLinux с systemd
├── rocky/ # Rocky Linux с systemd
├── ubuntu/ # Ubuntu с systemd
├── debian/ # Debian с systemd
└── README.md # Документация
🚀 Доступные образы
1. ansible-controller
Базовый образ: ubuntu:22.04
Тег: inecs/ansible-lab:ansible-controller-latest
Описание: Ansible контроллер с предустановленными коллекциями и инструментами
Компоненты:
- Ansible Core с последними коллекциями
- Docker CLI для работы с контейнерами
- kubectl для управления Kubernetes
- Helm для управления пакетами Kubernetes
- Kind для локального Kubernetes
- yq для работы с YAML
- jq для работы с JSON
Предустановленные коллекции:
collections:
- name: community.docker
version: ">=3.0.0"
- name: community.general
version: ">=7.0.0"
- name: ansible.posix
version: ">=1.5.4"
Предустановленные роли:
geerlingguy.docker- управление Dockergeerlingguy.kubernetes- управление Kubernetes
Переменные окружения:
DOCKER_HOST=unix:///var/run/docker.sock
ANSIBLE_FORCE_COLOR=1
ANSIBLE_STDOUT_CALLBACK=yaml
ANSIBLE_CALLBACKS_ENABLED=profile_tasks
Использование:
# Запуск контроллера
docker run -it --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd):/workspace \
-w /workspace \
inecs/ansible-lab:ansible-controller-latest
# Выполнение Ansible команд
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
2. ubuntu
Базовый образ: ubuntu:22.04
Тег: inecs/ansible-lab:ubuntu-latest
Описание: Ubuntu 22.04 LTS с systemd и Docker
Компоненты:
- Ubuntu 22.04 LTS (Jammy Jellyfish)
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск Ubuntu контейнера
docker run -d --privileged \
--name ubuntu-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:ubuntu-latest
# Подключение к контейнеру
docker exec -it ubuntu-test bash
3. debian
Базовый образ: debian:bookworm
Тег: inecs/ansible-lab:debian-latest
Описание: Debian 12 (Bookworm) с systemd и Docker
Компоненты:
- Debian 12 (Bookworm)
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск Debian контейнера
docker run -d --privileged \
--name debian-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:debian-latest
4. rhel
Базовый образ: registry.access.redhat.com/ubi8/ubi
Тег: inecs/ansible-lab:rhel-latest
Описание: Red Hat Enterprise Linux 8 с systemd и Docker
Компоненты:
- RHEL 8 (Universal Base Image)
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск RHEL контейнера
docker run -d --privileged \
--name rhel-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:rhel-latest
5. centos
Базовый образ: quay.io/centos/centos:stream9
Тег: inecs/ansible-lab:centos-latest
Описание: CentOS Stream 9 с systemd и Docker
Компоненты:
- CentOS Stream 9
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск CentOS контейнера
docker run -d --privileged \
--name centos-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:centos-latest
6. alma
Базовый образ: almalinux:8
Тег: inecs/ansible-lab:alma-latest
Описание: AlmaLinux 8 с systemd и Docker
Компоненты:
- AlmaLinux 8
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск AlmaLinux контейнера
docker run -d --privileged \
--name alma-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:alma-latest
7. rocky
Базовый образ: rockylinux:8
Тег: inecs/ansible-lab:rocky-latest
Описание: Rocky Linux 8 с systemd и Docker
Компоненты:
- Rocky Linux 8
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск Rocky Linux контейнера
docker run -d --privileged \
--name rocky-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:rocky-latest
8. alt-linux
Базовый образ: altlinux/p9
Тег: inecs/ansible-lab:alt-linux-latest
Описание: ALT Linux 9 с systemd и Docker
Компоненты:
- ALT Linux 9 (Platform 9)
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск ALT Linux контейнера
docker run -d --privileged \
--name alt-linux-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:alt-linux-latest
9. astra-linux
Базовый образ: astralinux/astra-1.7
Тег: inecs/ansible-lab:astra-linux-latest
Описание: Astra Linux 1.7 с systemd и Docker
Компоненты:
- Astra Linux 1.7
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск Astra Linux контейнера
docker run -d --privileged \
--name astra-linux-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:astra-linux-latest
10. redos
Базовый образ: redos/redos:9
Тег: inecs/ansible-lab:redos-latest
Описание: RED OS 9 с systemd и Docker
Компоненты:
- RED OS 9
- systemd для управления сервисами
- Docker CE с Docker Compose
- Python 3 с pip
- Пользователь ansible с sudo правами
Установленные пакеты:
systemd systemd-sysv dbus
curl wget git vim nano htop tree jq
python3 python3-pip
docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройки systemd:
systemctl set-default multi-user.target
Использование:
# Запуск RED OS контейнера
docker run -d --privileged \
--name redos-test \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
--tmpfs /run --tmpfs /run/lock \
--cap-add SYS_ADMIN \
inecs/ansible-lab:redos-latest
🔧 Управление образами
Сборка всех образов
# Сборка всех образов (multi-arch)
make docker build
# Сборка конкретного образа
make docker build-image IMAGE=ubuntu
# Полная пересборка с очисткой кеша
make docker rebuild
Отправка в Docker Hub
# Отправка всех образов
make docker push
# Загрузка всех образов
make docker pull
Очистка образов
# Очистка локальных образов
make docker clean
# Полная очистка Docker
make docker purge
Информация об образах
# Информация о собранных образах
make docker info
# Диагностика проблем
make docker diagnose
🏗️ Multi-Arch поддержка
Поддерживаемые архитектуры
| Архитектура | Описание | Статус |
|---|---|---|
linux/amd64 |
Intel/AMD 64-bit | ✅ Поддерживается |
linux/arm64 |
ARM 64-bit | ✅ Поддерживается |
linux/riscv64 |
RISC-V 64-bit | ✅ Поддерживается |
linux/ppc64le |
PowerPC 64-bit LE | ✅ Поддерживается |
linux/s390x |
IBM Z 64-bit | ✅ Поддерживается |
linux/386 |
Intel 32-bit | ✅ Поддерживается |
linux/arm/v7 |
ARM 32-bit v7 | ✅ Поддерживается |
linux/arm/v6 |
ARM 32-bit v6 | ✅ Поддерживается |
Настройка builder'а
# Настройка multi-arch builder
make docker setup-builder
# Проверка builder'а
make docker diagnose
# Сброс builder'а при проблемах
make docker reset-builder
🚀 Использование в preset'ах
Пример preset'а с собственными образами
# molecule/presets/custom-images.yml
---
#description: Preset с собственными образами AnsibleLab
docker_network: labnet
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# Собственные образы
images:
ubuntu: "inecs/ansible-lab:ubuntu-latest"
debian: "inecs/ansible-lab:debian-latest"
rhel: "inecs/ansible-lab:rhel-latest"
centos: "inecs/ansible-lab:centos-latest"
alma: "inecs/ansible-lab:alma-latest"
rocky: "inecs/ansible-lab:rocky-latest"
alt: "inecs/ansible-lab:alt-linux-latest"
astra: "inecs/ansible-lab:astra-linux-latest"
redos: "inecs/ansible-lab:redos-latest"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs: ["/run", "/run/lock"]
capabilities: ["SYS_ADMIN"]
hosts:
- name: ubuntu1
family: ubuntu
groups: [web, frontend]
- name: debian1
family: debian
groups: [web, frontend]
- name: rhel1
family: rhel
groups: [database, backend]
- name: centos1
family: centos
groups: [database, backend]
- name: alma1
family: alma
groups: [monitoring]
- name: rocky1
family: rocky
groups: [monitoring]
- name: alt1
family: alt
groups: [security]
- name: astra1
family: astra
groups: [security]
- name: redos1
family: redos
groups: [security]
Тестирование с собственными образами
# Тестирование с собственными образами
make custom-images test full
# Проверка наличия образов
make custom-images check
# Сборка всех образов
make custom-images build
📊 Мониторинг и диагностика
Проверка образов
# Проверка размера образов
docker images | grep inecs/ansible-lab
# Проверка архитектур
docker manifest inspect inecs/ansible-lab:ubuntu-latest
# Проверка содержимого образа
docker run --rm inecs/ansible-lab:ubuntu-latest cat /etc/os-release
Логи сборки
# Подробные логи сборки
make docker build 2>&1 | tee build.log
# Логи конкретного образа
make docker build-image IMAGE=ubuntu 2>&1 | tee ubuntu-build.log
🐛 Troubleshooting
Проблемы с сборкой
-
Builder не создается:
make docker diagnose make docker reset-builder -
Образы не собираются:
make docker clean make docker setup-builder make docker build -
Проблемы с multi-arch:
make docker clean-builder make docker setup-builder
Проблемы с образами
-
Образы не запускаются:
# Проверка systemd docker run --rm --privileged inecs/ansible-lab:ubuntu-latest systemctl status # Проверка Docker docker run --rm --privileged inecs/ansible-lab:ubuntu-latest docker --version -
Проблемы с правами:
# Проверка пользователя ansible docker run --rm inecs/ansible-lab:ubuntu-latest id ansible # Проверка sudo прав docker run --rm inecs/ansible-lab:ubuntu-latest sudo -l
📈 Производительность
Оптимизация сборки
# Использование кеша Docker
make docker build
# Очистка кеша при проблемах
make docker rebuild
Оптимизация образов
- Многоэтапная сборка для уменьшения размера
- Кеширование слоев для ускорения сборки
- Минимальные базовые образы для безопасности
- Оптимизированные зависимости для производительности
🔒 Безопасность
Безопасность образов
- Регулярные обновления базовых образов
- Минимальные права для пользователей
- Сканирование уязвимостей в CI/CD
- Подписанные образы для целостности
Лучшие практики
- Используйте конкретные теги вместо
latest - Регулярно обновляйте базовые образы
- Сканируйте образы на уязвимости
- Используйте multi-arch для совместимости
📚 Дополнительные ресурсы
Автор: Сергей Антропов
Сайт: https://devops.org.ru