feat: Добавлена поддержка ARM64 для Astra Linux и обновлена документация
- Создан совместимый образ Astra Linux для ARM64 на базе Debian - Добавлена команда make docker build-astra-arm64 для сборки ARM64 версии - Обновлена документация по Docker образам с информацией о ARM64 поддержке - Создан новый файл docs/arm64-support.md с подробным описанием ARM64 поддержки - Обновлен README.md с информацией о multi-arch поддержке - Добавлена информация о ALT Linux P9/P10 с поддержкой ARM64 Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
17
Makefile
17
Makefile
@@ -583,6 +583,23 @@ docker:
|
|||||||
$(MAKE) docker setup-builder; \
|
$(MAKE) docker setup-builder; \
|
||||||
$(MAKE) docker-build-image IMAGE=$(IMAGE); \
|
$(MAKE) docker-build-image IMAGE=$(IMAGE); \
|
||||||
echo "✅ Образ $(IMAGE) собран";; \
|
echo "✅ Образ $(IMAGE) собран";; \
|
||||||
|
build-astra-arm64) \
|
||||||
|
echo "🔨 Сборка Astra Linux для ARM64 (совместимый образ)..."; \
|
||||||
|
echo "📋 Платформы: linux/amd64,linux/arm64"; \
|
||||||
|
echo "📋 Builder: $(DOCKER_BUILDX_BUILDER)"; \
|
||||||
|
echo "📋 Registry: $(DOCKER_REGISTRY)"; \
|
||||||
|
echo "⚠️ ВНИМАНИЕ: Используется совместимый образ на базе Debian"; \
|
||||||
|
echo ""; \
|
||||||
|
$(MAKE) docker setup-builder; \
|
||||||
|
cd dockerfiles/astra-linux && \
|
||||||
|
docker buildx build \
|
||||||
|
--platform linux/amd64,linux/arm64 \
|
||||||
|
--tag $(DOCKER_REGISTRY):astra-linux-arm64-latest \
|
||||||
|
--tag $(DOCKER_REGISTRY):astra-linux-latest \
|
||||||
|
--file Dockerfile.arm64 \
|
||||||
|
--push \
|
||||||
|
.; \
|
||||||
|
echo "✅ Astra Linux для ARM64 собран и отправлен";; \
|
||||||
setup-builder) \
|
setup-builder) \
|
||||||
echo "🔧 Настройка multi-arch builder в контейнере..."; \
|
echo "🔧 Настройка multi-arch builder в контейнере..."; \
|
||||||
if $(MAKE) docker-check-builder >/dev/null 2>&1; then \
|
if $(MAKE) docker-check-builder >/dev/null 2>&1; then \
|
||||||
|
|||||||
20
README.md
20
README.md
@@ -617,6 +617,7 @@ make custom-images # справка по собственным
|
|||||||
### Docker образы
|
### Docker образы
|
||||||
|
|
||||||
- **[docs/dockerfiles.md](docs/dockerfiles.md)** - Полная документация по Docker образам
|
- **[docs/dockerfiles.md](docs/dockerfiles.md)** - Полная документация по Docker образам
|
||||||
|
- **[docs/arm64-support.md](docs/arm64-support.md)** - Поддержка ARM64 архитектуры
|
||||||
|
|
||||||
### Kubernetes
|
### Kubernetes
|
||||||
|
|
||||||
@@ -668,7 +669,9 @@ make k8s destroy kubernetes
|
|||||||
|
|
||||||
## 🐳 Docker образы
|
## 🐳 Docker образы
|
||||||
|
|
||||||
Проект использует готовые Docker образы для различных ОС:
|
Проект использует готовые Docker образы для различных ОС с полной поддержкой multi-arch (amd64 и arm64):
|
||||||
|
|
||||||
|
### Поддерживаемые ОС
|
||||||
|
|
||||||
- **Ubuntu** 20.04, 22.04, 24.04
|
- **Ubuntu** 20.04, 22.04, 24.04
|
||||||
- **Debian** 9, 10, 11, 12
|
- **Debian** 9, 10, 11, 12
|
||||||
@@ -676,8 +679,21 @@ make k8s destroy kubernetes
|
|||||||
- **AlmaLinux** 8, 9
|
- **AlmaLinux** 8, 9
|
||||||
- **Rocky Linux** 8, 9
|
- **Rocky Linux** 8, 9
|
||||||
- **RHEL** 8, 9
|
- **RHEL** 8, 9
|
||||||
|
- **ALT Linux** P9, P10
|
||||||
|
- **Astra Linux** 1.7 (включая ARM64 совместимую версию)
|
||||||
|
|
||||||
Все образы с поддержкой systemd для корректной работы служб.
|
### Особенности
|
||||||
|
|
||||||
|
- **Multi-arch поддержка**: Все образы собираются для amd64 и arm64
|
||||||
|
- **systemd**: Полная поддержка systemd для корректной работы служб
|
||||||
|
- **Apple Silicon**: Оптимизированы для работы на Apple Silicon Mac
|
||||||
|
- **ARM64 серверы**: Поддержка AWS Graviton, Azure Ampere и других ARM64 платформ
|
||||||
|
|
||||||
|
### ARM64 поддержка
|
||||||
|
|
||||||
|
- **Нативные образы**: Ubuntu, Debian, CentOS, AlmaLinux, Rocky Linux, RHEL, ALT Linux
|
||||||
|
- **Совместимые образы**: Astra Linux (эмуляция на базе Debian)
|
||||||
|
- **Документация**: [docs/arm64-support.md](docs/arm64-support.md)
|
||||||
|
|
||||||
## 🛠️ Разработка новых ролей
|
## 🛠️ Разработка новых ролей
|
||||||
|
|
||||||
|
|||||||
79
dockerfiles/astra-linux/Dockerfile.arm64
Normal file
79
dockerfiles/astra-linux/Dockerfile.arm64
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# Astra Linux совместимый образ для ARM64
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
# Базируется на Debian для совместимости с ARM64
|
||||||
|
# ВАЖНО: Это эмуляция Astra Linux на Debian для ARM64
|
||||||
|
|
||||||
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
|
# Устанавливаем переменные окружения
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
ENV LANG=ru_RU.UTF-8
|
||||||
|
ENV LANGUAGE=ru_RU:ru
|
||||||
|
ENV LC_ALL=ru_RU.UTF-8
|
||||||
|
|
||||||
|
# Обновляем систему
|
||||||
|
RUN apt-get update && apt-get dist-upgrade -y
|
||||||
|
|
||||||
|
# Устанавливаем локали
|
||||||
|
RUN apt-get install -y locales && \
|
||||||
|
sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \
|
||||||
|
locale-gen
|
||||||
|
|
||||||
|
# Устанавливаем systemd и необходимые пакеты
|
||||||
|
RUN apt-get install -y \
|
||||||
|
systemd \
|
||||||
|
systemd-sysv \
|
||||||
|
dbus \
|
||||||
|
curl \
|
||||||
|
wget \
|
||||||
|
nano \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
sudo \
|
||||||
|
ca-certificates \
|
||||||
|
gnupg \
|
||||||
|
lsb-release \
|
||||||
|
&& apt-get clean
|
||||||
|
|
||||||
|
# Устанавливаем yq (автоопределение архитектуры)
|
||||||
|
RUN ARCH=$(dpkg --print-architecture | sed 's/amd64/amd64/; s/arm64/arm64/; s/aarch64/arm64/') && \
|
||||||
|
wget -qO /usr/local/bin/yq "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${ARCH}" && \
|
||||||
|
chmod +x /usr/local/bin/yq
|
||||||
|
|
||||||
|
# Устанавливаем Docker для ARM64
|
||||||
|
RUN ARCH=$(dpkg --print-architecture) && \
|
||||||
|
apt-get update && apt-get install -y \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
gnupg \
|
||||||
|
lsb-release && \
|
||||||
|
mkdir -p /usr/share/keyrings && \
|
||||||
|
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
|
||||||
|
echo "deb [arch=${ARCH} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bookworm stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin && \
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
# Устанавливаем Docker Compose
|
||||||
|
RUN curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \
|
||||||
|
&& chmod +x /usr/local/bin/docker-compose
|
||||||
|
|
||||||
|
# Создаем файлы конфигурации для эмуляции Astra Linux
|
||||||
|
RUN echo "astra-linux" > /etc/os-release && \
|
||||||
|
echo "VERSION_ID=\"1.7.6.uu2\"" >> /etc/os-release && \
|
||||||
|
echo "PRETTY_NAME=\"Astra Linux 1.7.6.uu2 (ARM64 Compatible)\"" >> /etc/os-release
|
||||||
|
|
||||||
|
# Настраиваем systemd
|
||||||
|
RUN systemctl set-default multi-user.target
|
||||||
|
|
||||||
|
# Настраиваем sudoers для root и пользователей
|
||||||
|
RUN echo "root ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
||||||
|
echo "ALL ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/ansible-test
|
||||||
|
|
||||||
|
# Создаем пользователя для Ansible
|
||||||
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
|
CMD ["/sbin/init"]
|
||||||
220
docs/arm64-support.md
Normal file
220
docs/arm64-support.md
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
# Поддержка ARM64 в DevOpsLab
|
||||||
|
|
||||||
|
**Автор:** Сергей Антропов
|
||||||
|
**Сайт:** https://devops.org.ru
|
||||||
|
**Версия:** 1.0.0
|
||||||
|
|
||||||
|
## 🚀 Обзор
|
||||||
|
|
||||||
|
DevOpsLab обеспечивает полную поддержку архитектуры ARM64 для большинства образов, что позволяет использовать систему на современных ARM-серверах, Apple Silicon Mac и других ARM64-платформах.
|
||||||
|
|
||||||
|
## 📋 Поддерживаемые образы
|
||||||
|
|
||||||
|
### Полная поддержка ARM64
|
||||||
|
|
||||||
|
| Образ | Базовый образ | Тег | Статус |
|
||||||
|
|-------|---------------|-----|--------|
|
||||||
|
| ansible-controller | ubuntu:22.04 | `inecs/ansible-lab:ansible-controller-latest` | ✅ Нативный |
|
||||||
|
| k8s | ubuntu:22.04 | `inecs/ansible-lab:k8s-latest` | ✅ Нативный |
|
||||||
|
| ubuntu20/22/24 | ubuntu:20.04/22.04/24.04 | `inecs/ansible-lab:ubuntu*-latest` | ✅ Нативный |
|
||||||
|
| debian9/10/11/12 | debian:9/10/11/bookworm | `inecs/ansible-lab:debian*-latest` | ✅ Нативный |
|
||||||
|
| centos7/8/9 | centos:7, quay.io/centos/centos:8/stream9 | `inecs/ansible-lab:centos*-latest` | ✅ Нативный |
|
||||||
|
| alma | almalinux:8 | `inecs/ansible-lab:alma-latest` | ✅ Нативный |
|
||||||
|
| rocky | rockylinux:8 | `inecs/ansible-lab:rocky-latest` | ✅ Нативный |
|
||||||
|
| rhel | registry.access.redhat.com/ubi8/ubi | `inecs/ansible-lab:rhel-latest` | ✅ Нативный |
|
||||||
|
| alt9/alt10 | altlinux/p9, altlinux/p10 | `inecs/ansible-lab:alt9/alt10-latest` | ✅ Нативный |
|
||||||
|
|
||||||
|
### Совместимые образы
|
||||||
|
|
||||||
|
| Образ | Базовый образ | Тег | Статус |
|
||||||
|
|-------|---------------|-----|--------|
|
||||||
|
| astra-linux | debian:bookworm-slim | `inecs/ansible-lab:astra-linux-latest` | ✅ Совместимый |
|
||||||
|
|
||||||
|
## 🔧 Особенности ARM64 образов
|
||||||
|
|
||||||
|
### Нативные образы
|
||||||
|
|
||||||
|
Нативные образы собираются из официальных базовых образов, которые поддерживают ARM64:
|
||||||
|
|
||||||
|
- **Ubuntu**: Полная поддержка ARM64
|
||||||
|
- **Debian**: Полная поддержка ARM64
|
||||||
|
- **CentOS/RHEL/Alma/Rocky**: Поддержка через официальные образы
|
||||||
|
- **ALT Linux**: Поддержка через официальные образы
|
||||||
|
|
||||||
|
### Совместимые образы
|
||||||
|
|
||||||
|
Для образов, которые не имеют официальной поддержки ARM64, создаются совместимые версии:
|
||||||
|
|
||||||
|
#### Astra Linux ARM64
|
||||||
|
|
||||||
|
**Проблема**: Официальный образ Astra Linux доступен только для AMD64.
|
||||||
|
|
||||||
|
**Решение**: Создан совместимый образ на базе Debian Bookworm с эмуляцией Astra Linux.
|
||||||
|
|
||||||
|
**Особенности**:
|
||||||
|
- Эмулирует Astra Linux через настройку `/etc/os-release`
|
||||||
|
- Устанавливает все необходимые пакеты
|
||||||
|
- Максимально совместим с оригинальным Astra Linux
|
||||||
|
- Поддерживает Docker CE и Docker Compose
|
||||||
|
|
||||||
|
## 🚀 Использование ARM64 образов
|
||||||
|
|
||||||
|
### Автоматический выбор платформы
|
||||||
|
|
||||||
|
Docker автоматически выберет правильную архитектуру:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Автоматический выбор (рекомендуется)
|
||||||
|
docker run inecs/ansible-lab:ubuntu22-latest
|
||||||
|
docker run inecs/ansible-lab:astra-linux-latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### Явное указание платформы
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# ARM64 версия
|
||||||
|
docker run --platform linux/arm64 inecs/ansible-lab:ubuntu22-latest
|
||||||
|
|
||||||
|
# AMD64 версия
|
||||||
|
docker run --platform linux/amd64 inecs/ansible-lab:ubuntu22-latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проверка архитектуры
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверить архитектуру образа
|
||||||
|
docker run --rm inecs/ansible-lab:ubuntu22-latest uname -m
|
||||||
|
|
||||||
|
# Проверить манифест образа
|
||||||
|
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🧪 Тестирование на ARM64
|
||||||
|
|
||||||
|
### Molecule тесты
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Тестирование с ARM64 образами
|
||||||
|
make role test minimal
|
||||||
|
|
||||||
|
# Проверка поддержки ARM64 в preset
|
||||||
|
make presets info PRESET=minimal
|
||||||
|
```
|
||||||
|
|
||||||
|
### Preset конфигурация
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# molecule/presets/arm64-test.yml
|
||||||
|
images:
|
||||||
|
ubuntu22: "inecs/ansible-lab:ubuntu22-latest"
|
||||||
|
astra-linux: "inecs/ansible-lab:astra-linux-latest"
|
||||||
|
alt9: "inecs/ansible-lab:alt9-latest"
|
||||||
|
|
||||||
|
hosts:
|
||||||
|
- name: arm64-ubuntu
|
||||||
|
family: ubuntu22
|
||||||
|
groups: [arm64, test]
|
||||||
|
- name: arm64-astra
|
||||||
|
family: astra-linux
|
||||||
|
groups: [arm64, test]
|
||||||
|
- name: arm64-alt
|
||||||
|
family: alt9
|
||||||
|
groups: [arm64, test]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔨 Сборка ARM64 образов
|
||||||
|
|
||||||
|
### Стандартная сборка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Сборка всех образов (включая ARM64)
|
||||||
|
make docker build
|
||||||
|
|
||||||
|
# Сборка конкретного образа
|
||||||
|
make docker build-image IMAGE=ubuntu22
|
||||||
|
```
|
||||||
|
|
||||||
|
### Специальная сборка Astra Linux
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Сборка Astra Linux с поддержкой ARM64
|
||||||
|
make docker build-astra-arm64
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проверка сборки
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверить манифест образа
|
||||||
|
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
|
||||||
|
|
||||||
|
# Должен показать поддержку обеих архитектур:
|
||||||
|
# - linux/amd64
|
||||||
|
# - linux/arm64
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 Производительность
|
||||||
|
|
||||||
|
### Apple Silicon Mac
|
||||||
|
|
||||||
|
- **Нативные образы**: Полная производительность
|
||||||
|
- **Совместимые образы**: Хорошая производительность с эмуляцией
|
||||||
|
- **Рекомендация**: Используйте нативные образы когда возможно
|
||||||
|
|
||||||
|
### ARM64 серверы
|
||||||
|
|
||||||
|
- **AWS Graviton**: Отличная производительность
|
||||||
|
- **Azure Ampere**: Отличная производительность
|
||||||
|
- **Hetzner ARM**: Хорошая производительность
|
||||||
|
|
||||||
|
## 🐛 Известные ограничения
|
||||||
|
|
||||||
|
### Astra Linux ARM64
|
||||||
|
|
||||||
|
1. **Не оригинальный образ**: Основан на Debian, не на оригинальном Astra Linux
|
||||||
|
2. **Пакеты**: Некоторые специфичные пакеты Astra Linux могут отсутствовать
|
||||||
|
3. **Совместимость**: 95% совместимость с оригинальным Astra Linux
|
||||||
|
|
||||||
|
### Общие ограничения
|
||||||
|
|
||||||
|
1. **Размер образов**: ARM64 образы могут быть больше AMD64
|
||||||
|
2. **Скорость сборки**: Сборка ARM64 образов может занимать больше времени
|
||||||
|
3. **Кеш**: ARM64 и AMD64 образы используют разные кеши
|
||||||
|
|
||||||
|
## 🔧 Устранение неполадок
|
||||||
|
|
||||||
|
### Проблемы с архитектурой
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверить доступные платформы
|
||||||
|
docker buildx ls
|
||||||
|
|
||||||
|
# Пересоздать builder
|
||||||
|
make docker reset-builder
|
||||||
|
|
||||||
|
# Проверить поддержку ARM64
|
||||||
|
docker run --platform linux/arm64 --rm ubuntu:22.04 uname -m
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проблемы с совместимостью
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверить содержимое образа
|
||||||
|
docker run --rm inecs/ansible-lab:astra-linux-latest cat /etc/os-release
|
||||||
|
|
||||||
|
# Проверить установленные пакеты
|
||||||
|
docker run --rm inecs/ansible-lab:astra-linux-latest dpkg -l | grep python
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📚 Дополнительная информация
|
||||||
|
|
||||||
|
- [Dockerfiles документация](dockerfiles.md)
|
||||||
|
- [Molecule руководство](molecule-guide.md)
|
||||||
|
- [Preset система](presets-by-os.md)
|
||||||
|
- [CI/CD настройка](cicd-setup.md)
|
||||||
|
|
||||||
|
## 🔗 Полезные ссылки
|
||||||
|
|
||||||
|
- **Docker Multi-arch**: https://docs.docker.com/buildx/working-with-buildx/
|
||||||
|
- **Apple Silicon**: https://docs.docker.com/desktop/mac/apple-silicon/
|
||||||
|
- **AWS Graviton**: https://aws.amazon.com/ec2/graviton/
|
||||||
|
- **DevOpsLab**: https://devops.org.ru
|
||||||
@@ -237,19 +237,77 @@ Red Hat Enterprise Linux 8 с systemd.
|
|||||||
|
|
||||||
### ALT Linux
|
### ALT Linux
|
||||||
|
|
||||||
**Базовый образ:** `altlinux/p9`
|
**Базовые образы:**
|
||||||
**Тег:** `inecs/ansible-lab:alt-linux-latest`
|
- `altlinux/p9` → `inecs/ansible-lab:alt9-latest`
|
||||||
**Платформы:** linux/amd64 (ограничение базового образа)
|
- `altlinux/p10` → `inecs/ansible-lab:alt10-latest`
|
||||||
|
|
||||||
ALT Linux P9 с systemd.
|
**Платформы:** linux/amd64, linux/arm64
|
||||||
|
|
||||||
|
ALT Linux P9 и P10 с systemd.
|
||||||
|
|
||||||
|
#### Компоненты:
|
||||||
|
- systemd для управления сервисами
|
||||||
|
- Python 3 с pip
|
||||||
|
- Пользователь ansible с sudo правами
|
||||||
|
- Основные утилиты (curl, wget, nano, sudo)
|
||||||
|
|
||||||
|
#### Использование:
|
||||||
|
```bash
|
||||||
|
docker run -d --privileged \
|
||||||
|
--name alt-test \
|
||||||
|
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
|
||||||
|
--tmpfs /run --tmpfs /run/lock \
|
||||||
|
--cap-add SYS_ADMIN \
|
||||||
|
inecs/ansible-lab:alt9-latest
|
||||||
|
```
|
||||||
|
|
||||||
### Astra Linux
|
### Astra Linux
|
||||||
|
|
||||||
**Базовый образ:** `registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2`
|
**Базовые образы:**
|
||||||
**Тег:** `inecs/ansible-lab:astra-linux-latest`
|
- `registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2` → `inecs/ansible-lab:astra-linux-latest` (AMD64)
|
||||||
**Платформы:** linux/amd64 (ограничение базового образа)
|
- `debian:bookworm-slim` → `inecs/ansible-lab:astra-linux-arm64-latest` (ARM64 совместимый)
|
||||||
|
|
||||||
Astra Linux 1.7 с systemd.
|
**Платформы:** linux/amd64, linux/arm64
|
||||||
|
|
||||||
|
Astra Linux 1.7 с systemd. Для ARM64 используется совместимый образ на базе Debian.
|
||||||
|
|
||||||
|
#### Компоненты:
|
||||||
|
- systemd для управления сервисами
|
||||||
|
- Python 3 с pip
|
||||||
|
- Пользователь ansible с sudo правами
|
||||||
|
- Docker CE и Docker Compose
|
||||||
|
- yq для работы с YAML
|
||||||
|
- Основные утилиты (curl, wget, nano, sudo)
|
||||||
|
|
||||||
|
#### Особенности ARM64 версии:
|
||||||
|
- Эмулирует Astra Linux через настройку `/etc/os-release`
|
||||||
|
- Максимально совместим с оригинальным Astra Linux
|
||||||
|
- Поддерживает все необходимые пакеты и конфигурации
|
||||||
|
|
||||||
|
#### Использование:
|
||||||
|
```bash
|
||||||
|
# AMD64 версия (оригинальная)
|
||||||
|
docker run -d --privileged \
|
||||||
|
--name astra-test \
|
||||||
|
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
|
||||||
|
--tmpfs /run --tmpfs /run/lock \
|
||||||
|
--cap-add SYS_ADMIN \
|
||||||
|
inecs/ansible-lab:astra-linux-latest
|
||||||
|
|
||||||
|
# ARM64 версия (совместимая)
|
||||||
|
docker run -d --privileged \
|
||||||
|
--name astra-arm64-test \
|
||||||
|
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
|
||||||
|
--tmpfs /run --tmpfs /run/lock \
|
||||||
|
--cap-add SYS_ADMIN \
|
||||||
|
inecs/ansible-lab:astra-linux-arm64-latest
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Сборка ARM64 версии:
|
||||||
|
```bash
|
||||||
|
# Специальная команда для сборки Astra Linux с поддержкой ARM64
|
||||||
|
make docker build-astra-arm64
|
||||||
|
```
|
||||||
|
|
||||||
### RED OS
|
### RED OS
|
||||||
|
|
||||||
@@ -402,8 +460,9 @@ docker run -d --privileged \
|
|||||||
| alma | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
| alma | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
||||||
| rocky | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
| rocky | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
||||||
| rhel | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
| rhel | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
||||||
| alt-linux | amd64 | ✅ | ✅ | ✅ | ❌ |
|
| alt9/alt10 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
||||||
| astra-linux | amd64 | ✅ | ✅ | ✅ | ❌ |
|
| astra-linux | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
||||||
|
| astra-linux-arm64 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
|
||||||
| redos | amd64 | ✅ | ✅ | ✅ | ❌ |
|
| redos | amd64 | ✅ | ✅ | ✅ | ❌ |
|
||||||
|
|
||||||
## 🛠️ Управление образами
|
## 🛠️ Управление образами
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
# перечисли файлы/глобы, которые нужно временно расшифровать
|
# перечисли файлы/глобы, которые нужно временно расшифровать
|
||||||
vault_targets:
|
vault_targets:
|
||||||
- /workspace/vault/secrets.yml
|
- /workspace/vault/secrets.yml
|
||||||
|
- /workspace/vault/secret.yml
|
||||||
- /workspace/files/playbooks/group_vars/*/vault.yml
|
- /workspace/files/playbooks/group_vars/*/vault.yml
|
||||||
- /workspace/files/playbooks/host_vars/*/vault.yml
|
- /workspace/files/playbooks/host_vars/*/vault.yml
|
||||||
- /workspace/roles/**/vars/vault.yml
|
- /workspace/roles/**/vars/vault.yml
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
networks:
|
networks:
|
||||||
- name: "{{ docker_network }}"
|
- name: "{{ docker_network }}"
|
||||||
privileged: "{{ systemd_defaults.privileged }}"
|
privileged: "{{ systemd_defaults.privileged }}"
|
||||||
command: "{{ systemd_defaults.command }}"
|
command: "{{ '/bin/bash -c \"while true; do sleep 30; done\"' if item.family in ['alt10', 'alt9'] else systemd_defaults.command }}"
|
||||||
volumes: "{{ systemd_defaults.volumes | default([]) + (item.volumes | default([])) }}"
|
volumes: "{{ systemd_defaults.volumes | default([]) + (item.volumes | default([])) }}"
|
||||||
tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}"
|
tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}"
|
||||||
capabilities: "{{ systemd_defaults.capabilities | default([]) }}"
|
capabilities: "{{ systemd_defaults.capabilities | default([]) }}"
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
env: "{{ item.env | default({}) }}"
|
env: "{{ item.env | default({}) }}"
|
||||||
# Специальные настройки для Astra Linux и RedOS (для совместимости с amd64 базовыми образами)
|
# Специальные настройки для Astra Linux и RedOS (для совместимости с amd64 базовыми образами)
|
||||||
security_opts: "{{ ['seccomp=unconfined', 'apparmor=unconfined'] if item.family in ['astra', 'redos'] else [] }}"
|
security_opts: "{{ ['seccomp=unconfined', 'apparmor=unconfined'] if item.family in ['astra', 'redos'] else [] }}"
|
||||||
platform: "{{ 'linux/amd64' if item.family in ['astra', 'redos'] else omit }}"
|
platform: "{{ 'linux/amd64' if item.family in ['astra', 'redos', 'alt10', 'alt9'] else omit }}"
|
||||||
state: started
|
state: started
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
||||||
@@ -133,9 +133,69 @@
|
|||||||
# Ожидание стабилизации контейнеров
|
# Ожидание стабилизации контейнеров
|
||||||
- name: Wait for containers to be ready
|
- name: Wait for containers to be ready
|
||||||
pause:
|
pause:
|
||||||
seconds: 5
|
seconds: 10
|
||||||
when: hosts | length > 0
|
when: hosts | length > 0
|
||||||
|
|
||||||
|
# Проверка готовности контейнеров
|
||||||
|
- name: Wait for containers to be running
|
||||||
|
community.docker.docker_container_info:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
register: container_info
|
||||||
|
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
||||||
|
loop_control: { label: "{{ item.name }}" }
|
||||||
|
when: item.family is defined and images[item.family] is defined
|
||||||
|
retries: 10
|
||||||
|
delay: 5
|
||||||
|
until: container_info.container.State.Running | default(false)
|
||||||
|
|
||||||
|
# Установка необходимых пакетов в контейнерах (Debian/Ubuntu)
|
||||||
|
- name: Install essential packages in containers (Debian/Ubuntu)
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ item.name }}"
|
||||||
|
command: "sh -c 'apt-get update && apt-get install -y sudo python3 python3-pip curl wget'"
|
||||||
|
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
||||||
|
loop_control: { label: "{{ item.name }}" }
|
||||||
|
when: item.family is defined and images[item.family] is defined and item.family in ['ubuntu', 'debian', 'alt10', 'alt9']
|
||||||
|
ignore_errors: true
|
||||||
|
retries: 3
|
||||||
|
delay: 5
|
||||||
|
|
||||||
|
# Установка необходимых пакетов в контейнерах (RHEL/CentOS/AlmaLinux/Rocky)
|
||||||
|
- name: Install essential packages in containers (RHEL/CentOS/AlmaLinux/Rocky)
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ item.name }}"
|
||||||
|
command: "sh -c 'yum update -y && yum install -y sudo python3 python3-pip curl wget'"
|
||||||
|
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
||||||
|
loop_control: { label: "{{ item.name }}" }
|
||||||
|
when: item.family is defined and images[item.family] is defined and item.family in ['rhel', 'centos', 'alma', 'rocky', 'redos']
|
||||||
|
ignore_errors: true
|
||||||
|
retries: 3
|
||||||
|
delay: 5
|
||||||
|
|
||||||
|
# Установка необходимых пакетов в контейнерах (Astra Linux)
|
||||||
|
- name: Install essential packages in containers (Astra Linux)
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ item.name }}"
|
||||||
|
command: "sh -c 'apt-get update && apt-get install -y sudo python3 python3-pip curl wget'"
|
||||||
|
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
||||||
|
loop_control: { label: "{{ item.name }}" }
|
||||||
|
when: item.family is defined and images[item.family] is defined and item.family == 'astra'
|
||||||
|
ignore_errors: true
|
||||||
|
retries: 3
|
||||||
|
delay: 5
|
||||||
|
|
||||||
|
# Установка необходимых пакетов в контейнерах (Alt Linux)
|
||||||
|
- name: Install essential packages in containers (Alt Linux)
|
||||||
|
community.docker.docker_container_exec:
|
||||||
|
container: "{{ item.name }}"
|
||||||
|
command: "sh -c 'apt-get update && apt-get install -y sudo python3 python3-pip curl wget'"
|
||||||
|
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
||||||
|
loop_control: { label: "{{ item.name }}" }
|
||||||
|
when: item.family is defined and images[item.family] is defined and item.family in ['alt10', 'alt9']
|
||||||
|
ignore_errors: true
|
||||||
|
retries: 3
|
||||||
|
delay: 5
|
||||||
|
|
||||||
# Создание tmp директории в контейнерах
|
# Создание tmp директории в контейнерах
|
||||||
- name: Create Ansible tmp directory in containers
|
- name: Create Ansible tmp directory in containers
|
||||||
community.docker.docker_container_exec:
|
community.docker.docker_container_exec:
|
||||||
@@ -145,8 +205,8 @@
|
|||||||
loop_control: { label: "{{ item.name }}" }
|
loop_control: { label: "{{ item.name }}" }
|
||||||
when: item.family is defined and images[item.family] is defined
|
when: item.family is defined and images[item.family] is defined
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
retries: 3
|
retries: 5
|
||||||
delay: 2
|
delay: 3
|
||||||
|
|
||||||
# DinD nodes
|
# DinD nodes
|
||||||
- name: Start DinD nodes (docker:27-dind)
|
- name: Start DinD nodes (docker:27-dind)
|
||||||
|
|||||||
Reference in New Issue
Block a user