- Обновлено название проекта во всех файлах - Изменена документация (README.md, docs/*.md) - Обновлены конфигурационные файлы (Makefile, env.example) - Изменены CI/CD файлы (GitHub Actions, Azure DevOps, Jenkins) - Обновлены скрипты и Dockerfile - Изменено название в molecule.yml и dockerfiles/README.md Все ссылки и упоминания проекта теперь используют название AnsibleLab
		
			
				
	
	
		
			682 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			682 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Docker образы для универсальной системы тестирования AnsibleLab
 | ||
| 
 | ||
| **Автор:** Сергей Антропов  
 | ||
| **Сайт:** https://devops.org.ru  
 | ||
| **Версия:** 2.0.0
 | ||
| 
 | ||
| ## 🐳 Обзор
 | ||
| 
 | ||
| Эта директория содержит Docker образы для различных операционных систем и компонентов, используемых в универсальной системе тестирования Ansible ролей. Все образы поддерживают multi-arch сборку (amd64, arm64, riscv64, ppc64le, s390x, 386, arm/v7, arm/v6) и автоматически публикуются в Docker Hub.
 | ||
| 
 | ||
| ## 📁 Структура
 | ||
| 
 | ||
| ```
 | ||
| dockerfiles/
 | ||
| ├── ansible-controller/     # Ansible контроллер с предустановленными коллекциями
 | ||
| ├── alt-linux/             # ALT Linux с systemd
 | ||
| ├── astra-linux/           # Astra Linux с systemd
 | ||
| ├── redos/                 # RED OS с systemd
 | ||
| ├── rhel/                  # Red Hat Enterprise Linux с systemd
 | ||
| ├── centos/               # CentOS Stream с systemd
 | ||
| ├── alma/                 # AlmaLinux с systemd
 | ||
| ├── rocky/                # Rocky Linux с systemd
 | ||
| ├── ubuntu/               # Ubuntu с systemd
 | ||
| ├── debian/               # Debian с systemd
 | ||
| └── README.md             # Документация
 | ||
| ```
 | ||
| 
 | ||
| ## 🚀 Доступные образы
 | ||
| 
 | ||
| ### 1. ansible-controller
 | ||
| 
 | ||
| **Базовый образ:** `ubuntu:22.04`  
 | ||
| **Тег:** `inecs/ansible-lab:ansible-controller-latest`  
 | ||
| **Описание:** Ansible контроллер с предустановленными коллекциями и инструментами
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **Ansible Core** с последними коллекциями
 | ||
| - **Docker CLI** для работы с контейнерами
 | ||
| - **kubectl** для управления Kubernetes
 | ||
| - **Helm** для управления пакетами Kubernetes
 | ||
| - **Kind** для локального Kubernetes
 | ||
| - **yq** для работы с YAML
 | ||
| - **jq** для работы с JSON
 | ||
| 
 | ||
| #### Предустановленные коллекции:
 | ||
| ```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. ubuntu
 | ||
| 
 | ||
| **Базовый образ:** `ubuntu:22.04`  
 | ||
| **Тег:** `inecs/ansible-lab:ubuntu-latest`  
 | ||
| **Описание:** Ubuntu 22.04 LTS с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **Ubuntu 22.04 LTS** (Jammy Jellyfish)
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano htop tree jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки systemd:
 | ||
| ```bash
 | ||
| systemctl set-default multi-user.target
 | ||
| ```
 | ||
| 
 | ||
| #### Использование:
 | ||
| ```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:ubuntu-latest
 | ||
| 
 | ||
| # Подключение к контейнеру
 | ||
| docker exec -it ubuntu-test bash
 | ||
| ```
 | ||
| 
 | ||
| ### 3. debian
 | ||
| 
 | ||
| **Базовый образ:** `debian:bookworm`  
 | ||
| **Тег:** `inecs/ansible-lab:debian-latest`  
 | ||
| **Описание:** Debian 12 (Bookworm) с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **Debian 12** (Bookworm)
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano htop tree jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки systemd:
 | ||
| ```bash
 | ||
| systemctl set-default multi-user.target
 | ||
| ```
 | ||
| 
 | ||
| #### Использование:
 | ||
| ```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:debian-latest
 | ||
| ```
 | ||
| 
 | ||
| ### 4. rhel
 | ||
| 
 | ||
| **Базовый образ:** `registry.access.redhat.com/ubi8/ubi`  
 | ||
| **Тег:** `inecs/ansible-lab:rhel-latest`  
 | ||
| **Описание:** Red Hat Enterprise Linux 8 с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **RHEL 8** (Universal Base Image)
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки systemd:
 | ||
| ```bash
 | ||
| systemctl set-default multi-user.target
 | ||
| ```
 | ||
| 
 | ||
| #### Использование:
 | ||
| ```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
 | ||
| ```
 | ||
| 
 | ||
| ### 5. centos
 | ||
| 
 | ||
| **Базовый образ:** `quay.io/centos/centos:stream9`  
 | ||
| **Тег:** `inecs/ansible-lab:centos-latest`  
 | ||
| **Описание:** CentOS Stream 9 с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **CentOS Stream 9**
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки 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
 | ||
| ```
 | ||
| 
 | ||
| ### 6. alma
 | ||
| 
 | ||
| **Базовый образ:** `almalinux:8`  
 | ||
| **Тег:** `inecs/ansible-lab:alma-latest`  
 | ||
| **Описание:** AlmaLinux 8 с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **AlmaLinux 8**
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки 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
 | ||
| ```
 | ||
| 
 | ||
| ### 7. rocky
 | ||
| 
 | ||
| **Базовый образ:** `rockylinux:8`  
 | ||
| **Тег:** `inecs/ansible-lab:rocky-latest`  
 | ||
| **Описание:** Rocky Linux 8 с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **Rocky Linux 8**
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки 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
 | ||
| ```
 | ||
| 
 | ||
| ### 8. alt-linux
 | ||
| 
 | ||
| **Базовый образ:** `altlinux/p9`  
 | ||
| **Тег:** `inecs/ansible-lab:alt-linux-latest`  
 | ||
| **Описание:** ALT Linux 9 с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **ALT Linux 9** (Platform 9)
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano htop tree jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки 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
 | ||
| ```
 | ||
| 
 | ||
| ### 9. astra-linux
 | ||
| 
 | ||
| **Базовый образ:** `astralinux/astra-1.7`  
 | ||
| **Тег:** `inecs/ansible-lab:astra-linux-latest`  
 | ||
| **Описание:** Astra Linux 1.7 с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **Astra Linux 1.7**
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano htop tree jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки 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
 | ||
| ```
 | ||
| 
 | ||
| ### 10. redos
 | ||
| 
 | ||
| **Базовый образ:** `redos/redos:9`  
 | ||
| **Тег:** `inecs/ansible-lab:redos-latest`  
 | ||
| **Описание:** RED OS 9 с systemd и Docker
 | ||
| 
 | ||
| #### Компоненты:
 | ||
| - **RED OS 9**
 | ||
| - **systemd** для управления сервисами
 | ||
| - **Docker CE** с Docker Compose
 | ||
| - **Python 3** с pip
 | ||
| - **Пользователь ansible** с sudo правами
 | ||
| 
 | ||
| #### Установленные пакеты:
 | ||
| ```bash
 | ||
| systemd systemd-sysv dbus
 | ||
| curl wget git vim nano htop tree jq
 | ||
| python3 python3-pip
 | ||
| docker-ce docker-ce-cli containerd.io docker-compose-plugin
 | ||
| ```
 | ||
| 
 | ||
| #### Настройки 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 с собственными образами AnsibleLab
 | ||
| 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 |