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:
Сергей Антропов
2025-10-27 14:16:29 +03:00
parent c83b2526dc
commit c66bb35f97
7 changed files with 469 additions and 17 deletions

220
docs/arm64-support.md Normal file
View 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

View File

@@ -237,19 +237,77 @@ Red Hat Enterprise Linux 8 с systemd.
### ALT Linux
**Базовый образ:** `altlinux/p9`
**Тег:** `inecs/ansible-lab:alt-linux-latest`
**Платформы:** linux/amd64 (ограничение базового образа)
**Базовые образы:**
- `altlinux/p9` `inecs/ansible-lab:alt9-latest`
- `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
**Базовый образ:** `registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2`
**Тег:** `inecs/ansible-lab:astra-linux-latest`
**Платформы:** linux/amd64 (ограничение базового образа)
**Базовые образы:**
- `registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2` `inecs/ansible-lab:astra-linux-latest` (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
@@ -402,8 +460,9 @@ docker run -d --privileged \
| alma | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| rocky | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| rhel | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| alt-linux | amd64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux | amd64 | ✅ | ✅ | ✅ | ❌ |
| alt9/alt10 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| astra-linux-arm64 | amd64, arm64 | ✅ | ✅ | ✅ | ❌ |
| redos | amd64 | ✅ | ✅ | ✅ | ❌ |
## 🛠️ Управление образами