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 |