# Поддержка 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