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
				
			- Удалены упоминания об установленном Docker CE и Docker Compose Plugin - Добавлены примечания, что Docker не установлен (закомментирован в Dockerfile) - Исправлены описания всех образов (Ubuntu, Debian, CentOS, Alma, Rocky, RHEL, ALT, Astra, RED OS) - Docker CE и Docker Compose закомментированы в Dockerfile'ах Автор: Сергей Антропов Сайт: https://devops.org.ru
		
			
				
	
	
		
			411 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			411 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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
 |