# 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. #### Компоненты: - systemd для управления сервисами - Python 3 с pip - Пользователь ansible с sudo правами - Основные утилиты (curl, wget, git, vim, nano, htop, tree, jq) - **Примечание**: Docker CE и Docker Compose не установлены (закомментированы в Dockerfile) #### Использование: ```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. #### Компоненты: - systemd для управления сервисами - Python 3 с pip - Пользователь ansible с sudo правами - Основные утилиты - **Примечание**: Docker CE и Docker Compose не установлены #### Использование: ```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. #### Компоненты: - systemd для управления сервисами - Python 3 с pip - Пользователь ansible с sudo правами - Основные утилиты - **Примечание**: Docker CE и Docker Compose не установлены #### Использование: ```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. ### 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:alt-linux-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. ## 🔨 Сборка образов ### Сборка всех образов ```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