- Убрана подстановка значений по умолчанию для devops_password и devops_ssh_public_key - Добавлена строгая валидация секретов из vault/secrets.yml с детальными сообщениями об ошибках - Убран подробный вывод установки пакетов в тасках - Исправлена проблема с созданием симлинков в vault/ при тестировании - Обновлена логика загрузки vault переменных в molecule тестах - Добавлена очистка симлинков в destroy.yml для дополнительной безопасности Автор: Сергей Антропов Сайт: https://devops.org.ru
		
			
				
	
	
	
		
			16 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Docker образы DevOpsLab
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0
🐳 Обзор
DevOpsLab использует предварительно собранные Docker образы для различных операционных систем с полной поддержкой systemd. Все образы поддерживают multi-arch сборку и автоматически публикуются в Docker Hub под namespace inecs/ansible-lab.
📁 Структура dockerfiles/
dockerfiles/
├── ansible-controller/     # Ansible контроллер
│   ├── Dockerfile
│   ├── docker-compose.yml
│   ├── requirements.txt
│   └── requirements.yml
├── k8s/                    # Kubernetes контроллер (Kind, kubectl, Helm, Istio)
│   └── Dockerfile
├── k8s-portforward/        # Port-forward контейнер (устаревший)
│   ├── Dockerfile
│   └── portforward-container.py
├── 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
└── README.md              # Документация по Dockerfiles
🚀 Доступные образы
ansible-controller
Базовый образ: ubuntu:22.04
Теги: inecs/ansible-lab:ansible-controller-latest
Платформы: linux/amd64, linux/arm64
Ansible контроллер с предустановленными коллекциями и инструментами для разработки и тестирования.
Компоненты:
- Ansible Core с последними коллекциями
- Docker CLI для работы с контейнерами
- yq для работы с YAML
- jq для работы с JSON
- Molecule для тестирования ролей
Примечание: Kubernetes инструменты (kubectl, Helm, Kind, Istio) были перенесены в отдельный образ k8s.
Предустановленные коллекции:
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 run.yml
k8s
Базовый образ: ubuntu:22.04
Теги: inecs/ansible-lab:k8s-latest
Платформы: linux/amd64, linux/arm64
Kubernetes контроллер с инструментами для работы с Kubernetes, Helm, Istio и Kind кластерами.
Компоненты:
- Docker CLI (20.10.24) для работы с контейнерами
- kubectl (1.34.1) для управления Kubernetes
- Helm (latest) для управления пакетами Kubernetes
- Kind (0.30.0) для локальных Kubernetes кластеров
- Istio CLI (1.22.1) для управления Service Mesh
- Python 3 с модулем yaml для выполнения скриптов
Использование:
# Создание Kind кластера
docker run -it --rm \
  --name k8s-controller \
  --network kind \
  -v /var/run/docker.sock:/var/run/docker.sock:rw \
  inecs/ansible-lab:k8s-latest \
  kind create cluster --name lab
# Выполнение kubectl команд
docker exec k8s-controller kubectl get nodes
# Установка Helm релиза
docker exec k8s-controller helm install prometheus prometheus-community/kube-prometheus-stack
Примечание: Этот образ используется автоматически при выполнении make k8s команд. Контейнер запускается с именем k8s-controller и подключен к Docker daemon хоста.
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)
Использование:
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 не установлены
Использование:
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 не установлены
Использование:
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
- altlinux/p10→- inecs/ansible-lab:alt10-latest
Платформы: linux/amd64, linux/arm64
ALT Linux P9 и P10 с systemd.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Основные утилиты (curl, wget, nano, sudo)
Использование:
docker run -d --privileged \
  --name alt-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:alt9-latest
Astra Linux
Базовые образы:
- registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2→- inecs/ansible-lab:astra-linux-latest(AMD64)
- debian:bookworm-slim→- inecs/ansible-lab:astra-linux-arm64-latest(ARM64 совместимый)
Платформы: linux/amd64, linux/arm64
Astra Linux 1.7 с systemd. Для ARM64 используется совместимый образ на базе Debian.
Компоненты:
- systemd для управления сервисами
- Python 3 с pip
- Пользователь ansible с sudo правами
- Docker CE и Docker Compose
- yq для работы с YAML
- Основные утилиты (curl, wget, nano, sudo)
Особенности ARM64 версии:
- Эмулирует Astra Linux через настройку /etc/os-release
- Максимально совместим с оригинальным Astra Linux
- Поддерживает все необходимые пакеты и конфигурации
Использование:
# AMD64 версия (оригинальная)
docker run -d --privileged \
  --name astra-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:astra-linux-latest
# ARM64 версия (совместимая)
docker run -d --privileged \
  --name astra-arm64-test \
  -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
  --tmpfs /run --tmpfs /run/lock \
  --cap-add SYS_ADMIN \
  inecs/ansible-lab:astra-linux-arm64-latest
Сборка ARM64 версии:
# Специальная команда для сборки Astra Linux с поддержкой ARM64
make docker build-astra-arm64
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 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
Требования
- Авторизация в 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 | Kubernetes Tools | 
|---|---|---|---|---|---|
| ansible-controller | amd64, arm64 | ✅ | ✅ | ✅ | ❌ | 
| k8s | amd64, arm64 | ❌ | ✅ | ✅ | ✅ (kubectl, Helm, Kind, Istio) | 
| 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/alt10 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ | 
| astra-linux | amd64, arm64 | ✅ | ✅ | ✅ | ❌ | 
| astra-linux-arm64 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ | 
| 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
- DevOpsLab: https://devops.org.ru
- Документация: https://github.com/DevOpsLab/docs