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
Ansible Testing / lint (pull_request) Has been cancelled
Ansible Testing / test (default) (pull_request) Has been cancelled
Ansible Testing / test (minimal) (pull_request) Has been cancelled
Ansible Testing / test (performance) (pull_request) Has been cancelled
Ansible Testing / deploy-check (pull_request) Has been cancelled
790 lines
24 KiB
Markdown
790 lines
24 KiB
Markdown
# Docker образы для универсальной системы тестирования DevOpsLab
|
||
|
||
**Автор:** Сергей Антропов
|
||
**Сайт:** https://devops.org.ru
|
||
**Версия:** 3.0.0
|
||
|
||
## 🐳 Обзор
|
||
|
||
Эта директория содержит Docker образы для различных операционных систем и компонентов, используемых в универсальной системе тестирования Ansible ролей. Все образы поддерживают multi-arch сборку (amd64, arm64, riscv64, ppc64le, s390x, 386, arm/v7, arm/v6) и автоматически публикуются в Docker Hub.
|
||
|
||
## 📁 Структура
|
||
|
||
```
|
||
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 с systemd
|
||
│ └── Dockerfile
|
||
├── astra-linux/ # Astra Linux 1.7 с systemd
|
||
│ └── Dockerfile
|
||
├── redos/ # RED OS 9 с systemd
|
||
│ └── Dockerfile
|
||
├── rhel/ # Red Hat Enterprise Linux 8 с systemd
|
||
│ └── Dockerfile
|
||
├── centos7/ # CentOS 7 с systemd
|
||
│ └── Dockerfile
|
||
├── centos8/ # CentOS 8 Stream с systemd
|
||
│ └── Dockerfile
|
||
├── centos9/ # CentOS 9 Stream с systemd
|
||
│ └── Dockerfile
|
||
├── alma/ # AlmaLinux 8 с systemd
|
||
│ └── Dockerfile
|
||
├── rocky/ # Rocky Linux 8 с systemd
|
||
│ └── Dockerfile
|
||
├── ubuntu20/ # Ubuntu 20.04 LTS (focal) с systemd
|
||
│ └── Dockerfile
|
||
├── ubuntu22/ # Ubuntu 22.04 LTS (jammy) с systemd
|
||
│ └── Dockerfile
|
||
├── ubuntu24/ # Ubuntu 24.04 LTS (noble) с systemd
|
||
│ └── Dockerfile
|
||
├── debian9/ # Debian 9 (stretch) с systemd
|
||
│ └── Dockerfile
|
||
├── debian10/ # Debian 10 (buster) с systemd
|
||
│ └── Dockerfile
|
||
├── debian11/ # Debian 11 (bullseye) с systemd
|
||
│ └── Dockerfile
|
||
├── debian12/ # Debian 12 (bookworm) с systemd
|
||
│ └── Dockerfile
|
||
└── README.md # Этот файл
|
||
```
|
||
|
||
## 🚀 Доступные образы
|
||
|
||
### 1. ansible-controller
|
||
|
||
**Базовый образ:** `ubuntu:22.04`
|
||
**Тег:** `inecs/ansible-lab:ansible-controller-latest`
|
||
**Описание:** Ansible контроллер с предустановленными коллекциями и инструментами
|
||
|
||
#### Компоненты:
|
||
- **Ansible Core** с последними коллекциями
|
||
- **Docker CLI** для работы с контейнерами
|
||
- **yq** для работы с YAML
|
||
- **jq** для работы с JSON
|
||
|
||
**Примечание:** Kubernetes инструменты (kubectl, Helm, Kind, Istio) были перенесены в отдельный образ `k8s`.
|
||
|
||
#### Предустановленные коллекции:
|
||
```yaml
|
||
collections:
|
||
- name: community.docker
|
||
version: ">=3.0.0"
|
||
- name: community.general
|
||
version: ">=7.0.0"
|
||
- name: ansible.posix
|
||
version: ">=1.5.4"
|
||
```
|
||
|
||
#### Предустановленные роли:
|
||
- `geerlingguy.docker` - управление Docker
|
||
- `geerlingguy.kubernetes` - управление Kubernetes
|
||
|
||
#### Переменные окружения:
|
||
```bash
|
||
DOCKER_HOST=unix:///var/run/docker.sock
|
||
ANSIBLE_FORCE_COLOR=1
|
||
ANSIBLE_STDOUT_CALLBACK=yaml
|
||
ANSIBLE_CALLBACKS_ENABLED=profile_tasks
|
||
```
|
||
|
||
#### Использование:
|
||
```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
|
||
|
||
# Выполнение Ansible команд
|
||
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
|
||
```
|
||
|
||
### 2. k8s
|
||
|
||
**Базовый образ:** `ubuntu:22.04`
|
||
**Тег:** `inecs/ansible-lab:k8s-latest`
|
||
**Описание:** 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 для выполнения скриптов
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Создание 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 хоста.
|
||
|
||
### 3. Ubuntu
|
||
|
||
#### Ubuntu 20.04 (focal)
|
||
|
||
**Базовый образ:** `ubuntu:20.04`
|
||
**Тег:** `inecs/ansible-lab:ubuntu20`
|
||
**Описание:** Ubuntu 20.04 LTS с systemd
|
||
|
||
**Компоненты:**
|
||
- Ubuntu 20.04 LTS (Focal Fossa)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
#### Ubuntu 22.04 (jammy) - основная версия
|
||
|
||
**Базовый образ:** `ubuntu:22.04`
|
||
**Тег:** `inecs/ansible-lab:ubuntu-latest` или `inecs/ansible-lab:ubuntu22`
|
||
**Описание:** Ubuntu 22.04 LTS с systemd
|
||
|
||
**Компоненты:**
|
||
- Ubuntu 22.04 LTS (Jammy Jellyfish)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
#### Ubuntu 24.04 (noble)
|
||
|
||
**Базовый образ:** `ubuntu:24.04`
|
||
**Тег:** `inecs/ansible-lab:ubuntu24`
|
||
**Описание:** Ubuntu 24.04 LTS с systemd
|
||
|
||
**Компоненты:**
|
||
- Ubuntu 24.04 LTS (Noble Numbat)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
|
||
**Использование:**
|
||
```bash
|
||
# Запуск Ubuntu контейнера
|
||
docker run -d --privileged \
|
||
--name ubuntu-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:ubuntu22
|
||
```
|
||
|
||
### 4. Debian
|
||
|
||
#### Debian 9 (stretch)
|
||
|
||
**Базовый образ:** `debian:stretch`
|
||
**Тег:** `inecs/ansible-lab:debian9`
|
||
**Описание:** Debian 9 Stretch с systemd
|
||
|
||
**Компоненты:**
|
||
- Debian 9 (Stretch)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
#### Debian 10 (buster)
|
||
|
||
**Базовый образ:** `debian:buster`
|
||
**Тег:** `inecs/ansible-lab:debian10`
|
||
**Описание:** Debian 10 Buster с systemd
|
||
|
||
**Компоненты:**
|
||
- Debian 10 (Buster)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
#### Debian 11 (bullseye)
|
||
|
||
**Базовый образ:** `debian:bullseye`
|
||
**Тег:** `inecs/ansible-lab:debian11`
|
||
**Описание:** Debian 11 Bullseye с systemd
|
||
|
||
**Компоненты:**
|
||
- Debian 11 (Bullseye)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
#### Debian 12 (bookworm) - основная версия
|
||
|
||
**Базовый образ:** `debian:bookworm`
|
||
**Тег:** `inecs/ansible-lab:debian-latest` или `inecs/ansible-lab:debian12`
|
||
**Описание:** Debian 12 Bookworm с systemd
|
||
|
||
**Компоненты:**
|
||
- Debian 12 (Bookworm)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
|
||
**Использование:**
|
||
```bash
|
||
# Запуск Debian контейнера
|
||
docker run -d --privileged \
|
||
--name debian-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:debian12
|
||
```
|
||
|
||
### 5. RHEL (Red Hat Enterprise Linux)
|
||
|
||
**Базовый образ:** `registry.access.redhat.com/ubi8/ubi`
|
||
**Тег:** `inecs/ansible-lab:rhel-latest`
|
||
**Описание:** Red Hat Enterprise Linux 8 с systemd
|
||
|
||
**Компоненты:**
|
||
- RHEL 8 (Universal Base Image)
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
|
||
**Использование:**
|
||
```bash
|
||
# Запуск RHEL контейнера
|
||
docker run -d --privileged \
|
||
--name rhel-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:rhel-latest
|
||
```
|
||
|
||
### 6. CentOS
|
||
|
||
#### CentOS 7
|
||
|
||
**Базовый образ:** `centos:7`
|
||
**Тег:** `inecs/ansible-lab:centos7`
|
||
**Описание:** CentOS 7 с systemd
|
||
|
||
**Компоненты:**
|
||
- CentOS 7
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
#### CentOS 8
|
||
|
||
**Базовый образ:** `quay.io/centos/centos:stream8`
|
||
**Тег:** `inecs/ansible-lab:centos8`
|
||
**Описание:** CentOS 8 Stream с systemd
|
||
|
||
**Компоненты:**
|
||
- CentOS 8 Stream
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
#### CentOS 9 (stream) - основная версия
|
||
|
||
**Базовый образ:** `quay.io/centos/centos:stream9`
|
||
**Тег:** `inecs/ansible-lab:centos-latest` или `inecs/ansible-lab:centos9`
|
||
**Описание:** CentOS Stream 9 с systemd
|
||
|
||
**Компоненты:**
|
||
- CentOS Stream 9
|
||
- systemd, Python 3, базовые утилиты
|
||
- Пользователь ansible с sudo правами
|
||
|
||
**Примечание:** Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
|
||
**Использование:**
|
||
```bash
|
||
# Запуск CentOS контейнера
|
||
docker run -d --privileged \
|
||
--name centos-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:centos9
|
||
```
|
||
|
||
#### Настройки systemd:
|
||
```bash
|
||
systemctl set-default multi-user.target
|
||
```
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Запуск CentOS контейнера
|
||
docker run -d --privileged \
|
||
--name centos-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:centos-latest
|
||
```
|
||
|
||
### 7. alma
|
||
|
||
**Базовый образ:** `almalinux:8`
|
||
**Тег:** `inecs/ansible-lab:alma-latest`
|
||
**Описание:** AlmaLinux 8 с systemd и Docker
|
||
|
||
#### Компоненты:
|
||
- **AlmaLinux 8**
|
||
- **systemd** для управления сервисами
|
||
|
||
- **Python 3** с pip
|
||
- **Пользователь ansible** с sudo правами
|
||
|
||
#### Установленные пакеты:
|
||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
```bash
|
||
systemd systemd-sysv dbus
|
||
curl wget git vim nano jq
|
||
python3 python3-pip
|
||
```
|
||
|
||
#### Настройки systemd:
|
||
```bash
|
||
systemctl set-default multi-user.target
|
||
```
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Запуск AlmaLinux контейнера
|
||
docker run -d --privileged \
|
||
--name alma-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:alma-latest
|
||
```
|
||
|
||
### 8. rocky
|
||
|
||
**Базовый образ:** `rockylinux:8`
|
||
**Тег:** `inecs/ansible-lab:rocky-latest`
|
||
**Описание:** Rocky Linux 8 с systemd и Docker
|
||
|
||
#### Компоненты:
|
||
- **Rocky Linux 8**
|
||
- **systemd** для управления сервисами
|
||
|
||
- **Python 3** с pip
|
||
- **Пользователь ansible** с sudo правами
|
||
|
||
#### Установленные пакеты:
|
||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
```bash
|
||
systemd systemd-sysv dbus
|
||
curl wget git vim nano jq
|
||
python3 python3-pip
|
||
```
|
||
|
||
#### Настройки systemd:
|
||
```bash
|
||
systemctl set-default multi-user.target
|
||
```
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Запуск Rocky Linux контейнера
|
||
docker run -d --privileged \
|
||
--name rocky-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:rocky-latest
|
||
```
|
||
|
||
### 9. alt-linux
|
||
|
||
**Базовый образ:** `altlinux/p9`
|
||
**Тег:** `inecs/ansible-lab:alt-linux-latest`
|
||
**Описание:** ALT Linux 9 с systemd и Docker
|
||
|
||
#### Компоненты:
|
||
- **ALT Linux 9** (Platform 9)
|
||
- **systemd** для управления сервисами
|
||
|
||
- **Python 3** с pip
|
||
- **Пользователь ansible** с sudo правами
|
||
|
||
#### Установленные пакеты:
|
||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
```bash
|
||
systemd systemd-sysv dbus
|
||
curl wget git vim nano htop tree jq
|
||
python3 python3-pip
|
||
```
|
||
|
||
#### Настройки systemd:
|
||
```bash
|
||
systemctl set-default multi-user.target
|
||
```
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Запуск ALT Linux контейнера
|
||
docker run -d --privileged \
|
||
--name alt-linux-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:alt-linux-latest
|
||
```
|
||
|
||
### 10. astra-linux
|
||
|
||
**Базовый образ:** `astralinux/astra-1.7`
|
||
**Тег:** `inecs/ansible-lab:astra-linux-latest`
|
||
**Описание:** Astra Linux 1.7 с systemd и Docker
|
||
|
||
#### Компоненты:
|
||
- **Astra Linux 1.7**
|
||
- **systemd** для управления сервисами
|
||
|
||
- **Python 3** с pip
|
||
- **Пользователь ansible** с sudo правами
|
||
|
||
#### Установленные пакеты:
|
||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
```bash
|
||
systemd systemd-sysv dbus
|
||
curl wget git vim nano htop tree jq
|
||
python3 python3-pip
|
||
```
|
||
|
||
#### Настройки systemd:
|
||
```bash
|
||
systemctl set-default multi-user.target
|
||
```
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Запуск Astra Linux контейнера
|
||
docker run -d --privileged \
|
||
--name astra-linux-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:astra-linux-latest
|
||
```
|
||
|
||
### 11. redos
|
||
|
||
**Базовый образ:** `redos/redos:9`
|
||
**Тег:** `inecs/ansible-lab:redos-latest`
|
||
**Описание:** RED OS 9 с systemd и Docker
|
||
|
||
#### Компоненты:
|
||
- **RED OS 9**
|
||
- **systemd** для управления сервисами
|
||
|
||
- **Python 3** с pip
|
||
- **Пользователь ansible** с sudo правами
|
||
|
||
#### Установленные пакеты:
|
||
- **Примечание**: Docker CE и Docker Compose НЕ установлены (закомментированы в Dockerfile)
|
||
```bash
|
||
systemd systemd-sysv dbus
|
||
curl wget git vim nano htop tree jq
|
||
python3 python3-pip
|
||
```
|
||
|
||
#### Настройки systemd:
|
||
```bash
|
||
systemctl set-default multi-user.target
|
||
```
|
||
|
||
#### Использование:
|
||
```bash
|
||
# Запуск RED OS контейнера
|
||
docker run -d --privileged \
|
||
--name redos-test \
|
||
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
|
||
--tmpfs /run --tmpfs /run/lock \
|
||
--cap-add SYS_ADMIN \
|
||
inecs/ansible-lab:redos-latest
|
||
```
|
||
|
||
## 🔧 Управление образами
|
||
|
||
### Сборка всех образов
|
||
|
||
```bash
|
||
# Сборка всех образов (multi-arch)
|
||
make docker build
|
||
|
||
# Сборка конкретного образа
|
||
make docker build-image IMAGE=ubuntu
|
||
|
||
# Полная пересборка с очисткой кеша
|
||
make docker rebuild
|
||
```
|
||
|
||
### Отправка в Docker Hub
|
||
|
||
```bash
|
||
# Отправка всех образов
|
||
make docker push
|
||
|
||
# Загрузка всех образов
|
||
make docker pull
|
||
```
|
||
|
||
### Очистка образов
|
||
|
||
```bash
|
||
# Очистка локальных образов
|
||
make docker clean
|
||
|
||
# Полная очистка Docker
|
||
make docker purge
|
||
```
|
||
|
||
### Информация об образах
|
||
|
||
```bash
|
||
# Информация о собранных образах
|
||
make docker info
|
||
|
||
# Диагностика проблем
|
||
make docker diagnose
|
||
```
|
||
|
||
## 🏗️ Multi-Arch поддержка
|
||
|
||
### Поддерживаемые архитектуры
|
||
|
||
| Архитектура | Описание | Статус |
|
||
|-------------|----------|--------|
|
||
| `linux/amd64` | Intel/AMD 64-bit | ✅ Поддерживается |
|
||
| `linux/arm64` | ARM 64-bit | ✅ Поддерживается |
|
||
| `linux/riscv64` | RISC-V 64-bit | ✅ Поддерживается |
|
||
| `linux/ppc64le` | PowerPC 64-bit LE | ✅ Поддерживается |
|
||
| `linux/s390x` | IBM Z 64-bit | ✅ Поддерживается |
|
||
| `linux/386` | Intel 32-bit | ✅ Поддерживается |
|
||
| `linux/arm/v7` | ARM 32-bit v7 | ✅ Поддерживается |
|
||
| `linux/arm/v6` | ARM 32-bit v6 | ✅ Поддерживается |
|
||
|
||
### Настройка builder'а
|
||
|
||
```bash
|
||
# Настройка multi-arch builder
|
||
make docker setup-builder
|
||
|
||
# Проверка builder'а
|
||
make docker diagnose
|
||
|
||
# Сброс builder'а при проблемах
|
||
make docker reset-builder
|
||
```
|
||
|
||
## 🚀 Использование в preset'ах
|
||
|
||
### Пример preset'а с собственными образами
|
||
|
||
```yaml
|
||
# molecule/presets/custom-images.yml
|
||
---
|
||
#description: Preset с собственными образами DevOpsLab
|
||
docker_network: labnet
|
||
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
|
||
|
||
# Собственные образы
|
||
images:
|
||
ubuntu: "inecs/ansible-lab:ubuntu-latest"
|
||
debian: "inecs/ansible-lab:debian-latest"
|
||
rhel: "inecs/ansible-lab:rhel-latest"
|
||
centos: "inecs/ansible-lab:centos-latest"
|
||
alma: "inecs/ansible-lab:alma-latest"
|
||
rocky: "inecs/ansible-lab:rocky-latest"
|
||
alt: "inecs/ansible-lab:alt-linux-latest"
|
||
astra: "inecs/ansible-lab:astra-linux-latest"
|
||
redos: "inecs/ansible-lab:redos-latest"
|
||
|
||
systemd_defaults:
|
||
privileged: true
|
||
command: "/sbin/init"
|
||
volumes:
|
||
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
|
||
tmpfs: ["/run", "/run/lock"]
|
||
capabilities: ["SYS_ADMIN"]
|
||
|
||
hosts:
|
||
- name: ubuntu1
|
||
family: ubuntu
|
||
groups: [web, frontend]
|
||
- name: debian1
|
||
family: debian
|
||
groups: [web, frontend]
|
||
- name: rhel1
|
||
family: rhel
|
||
groups: [database, backend]
|
||
- name: centos1
|
||
family: centos
|
||
groups: [database, backend]
|
||
- name: alma1
|
||
family: alma
|
||
groups: [monitoring]
|
||
- name: rocky1
|
||
family: rocky
|
||
groups: [monitoring]
|
||
- name: alt1
|
||
family: alt
|
||
groups: [security]
|
||
- name: astra1
|
||
family: astra
|
||
groups: [security]
|
||
- name: redos1
|
||
family: redos
|
||
groups: [security]
|
||
```
|
||
|
||
### Тестирование с собственными образами
|
||
|
||
```bash
|
||
# Тестирование с собственными образами
|
||
make custom-images test full
|
||
|
||
# Проверка наличия образов
|
||
make custom-images check
|
||
|
||
# Сборка всех образов
|
||
make custom-images build
|
||
```
|
||
|
||
## 📊 Мониторинг и диагностика
|
||
|
||
### Проверка образов
|
||
|
||
```bash
|
||
# Проверка размера образов
|
||
docker images | grep inecs/ansible-lab
|
||
|
||
# Проверка архитектур
|
||
docker manifest inspect inecs/ansible-lab:ubuntu-latest
|
||
|
||
# Проверка содержимого образа
|
||
docker run --rm inecs/ansible-lab:ubuntu-latest cat /etc/os-release
|
||
```
|
||
|
||
### Логи сборки
|
||
|
||
```bash
|
||
# Подробные логи сборки
|
||
make docker build 2>&1 | tee build.log
|
||
|
||
# Логи конкретного образа
|
||
make docker build-image IMAGE=ubuntu 2>&1 | tee ubuntu-build.log
|
||
```
|
||
|
||
## 🐛 Troubleshooting
|
||
|
||
### Проблемы с сборкой
|
||
|
||
1. **Builder не создается:**
|
||
```bash
|
||
make docker diagnose
|
||
make docker reset-builder
|
||
```
|
||
|
||
2. **Образы не собираются:**
|
||
```bash
|
||
make docker clean
|
||
make docker setup-builder
|
||
make docker build
|
||
```
|
||
|
||
3. **Проблемы с multi-arch:**
|
||
```bash
|
||
make docker clean-builder
|
||
make docker setup-builder
|
||
```
|
||
|
||
### Проблемы с образами
|
||
|
||
1. **Образы не запускаются:**
|
||
```bash
|
||
# Проверка systemd
|
||
docker run --rm --privileged inecs/ansible-lab:ubuntu-latest systemctl status
|
||
|
||
# Проверка Docker
|
||
docker run --rm --privileged inecs/ansible-lab:ubuntu-latest docker --version
|
||
```
|
||
|
||
2. **Проблемы с правами:**
|
||
```bash
|
||
# Проверка пользователя ansible
|
||
docker run --rm inecs/ansible-lab:ubuntu-latest id ansible
|
||
|
||
# Проверка sudo прав
|
||
docker run --rm inecs/ansible-lab:ubuntu-latest sudo -l
|
||
```
|
||
|
||
## 📈 Производительность
|
||
|
||
### Оптимизация сборки
|
||
|
||
```bash
|
||
# Использование кеша Docker
|
||
make docker build
|
||
|
||
# Очистка кеша при проблемах
|
||
make docker rebuild
|
||
```
|
||
|
||
### Оптимизация образов
|
||
|
||
- **Многоэтапная сборка** для уменьшения размера
|
||
- **Кеширование слоев** для ускорения сборки
|
||
- **Минимальные базовые образы** для безопасности
|
||
- **Оптимизированные зависимости** для производительности
|
||
|
||
## 🔒 Безопасность
|
||
|
||
### Безопасность образов
|
||
|
||
- **Регулярные обновления** базовых образов
|
||
- **Минимальные права** для пользователей
|
||
- **Сканирование уязвимостей** в CI/CD
|
||
- **Подписанные образы** для целостности
|
||
|
||
### Лучшие практики
|
||
|
||
1. **Используйте конкретные теги** вместо `latest`
|
||
2. **Регулярно обновляйте** базовые образы
|
||
3. **Сканируйте образы** на уязвимости
|
||
4. **Используйте multi-arch** для совместимости
|
||
|
||
## 📚 Дополнительные ресурсы
|
||
|
||
- [Docker Multi-Arch Build](https://docs.docker.com/buildx/working-with-buildx/)
|
||
- [Ansible Collections](https://docs.ansible.com/ansible/latest/collections_guide/index.html)
|
||
- [Molecule Documentation](https://molecule.readthedocs.io/)
|
||
- [Systemd in Containers](https://systemd.io/CONTAINER_INTERFACE/)
|
||
|
||
---
|
||
|
||
**Автор:** Сергей Антропов
|
||
**Сайт:** https://devops.org.ru |