Files
DevOpsLab/docs/dockerfiles.md
Сергей Антропов d37f59ba77
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
Переименование проекта AnsibleLab в DevOpsLab
2025-10-27 10:46:04 +03:00

12 KiB
Raw Blame History

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 для тестирования ролей

Предустановленные коллекции:

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 site.yml

Ubuntu

Базовые образы:

  • ubuntu:20.04inecs/ansible-lab:ubuntu20-latest
  • ubuntu:22.04inecs/ansible-lab:ubuntu22-latest
  • ubuntu:24.04inecs/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:9inecs/ansible-lab:debian9-latest
  • debian:10inecs/ansible-lab:debian10-latest
  • debian:11inecs/ansible-lab:debian11-latest
  • debian:bookworminecs/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:7inecs/ansible-lab:centos7-latest
  • quay.io/centos/centos:8inecs/ansible-lab:centos8-latest
  • quay.io/centos/centos:stream9inecs/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
Платформы: 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.

🔨 Сборка образов

Сборка всех образов

# Собрать все образы (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:
docker login
  1. Настройка билд-ксер (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
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

🛠️ Управление образами

Проверка наличия образов

# Проверка локальных образов
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

📚 Дополнительная информация

🔗 Полезные ссылки