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
411 lines
12 KiB
Markdown
411 lines
12 KiB
Markdown
# Docker образы DevOpsLab
|
||
|
||
**Автор:** Сергей Антропов
|
||
**Сайт:** https://devops.org.ru
|
||
**Версия:** 2.0.0
|
||
|
||
## 🐳 Обзор
|
||
|
||
DevOpsLab использует предварительно собранные 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 для тестирования ролей
|
||
|
||
#### Предустановленные коллекции:
|
||
```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: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.
|
||
|
||
## 🔨 Сборка образов
|
||
|
||
### Сборка всех образов
|
||
|
||
```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 | ✅ | ✅ | ✅ |
|
||
| alt9 | 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
|
||
- **DevOpsLab**: https://devops.org.ru
|
||
- **Документация**: https://github.com/DevOpsLab/docs
|