Files
DevOpsLab/docs/platform-support.md
Сергей Антропов 692fe8c6c0
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
Удалена папка dockerfiles/debian и обновлены все конфигурации
- Удалена папка dockerfiles/debian
- Обновлены все presets/*.yml файлы с новыми образами
- Обновлена документация в соответствии с новыми возможностями
- Добавлены новые версии Ubuntu (20.04, 22.04, 24.04)
- Добавлены новые версии CentOS (7, 8, 9)
- Добавлены новые версии Debian (9, 10, 11, 12)
- Обновлены family в hosts секциях
- Обновлена документация по поддержке платформ
2025-10-26 00:08:56 +03:00

5.6 KiB
Raw Blame History

Поддержка платформ в пресетах

Автор

Сергей Антропов Сайт: https://devops.org.ru

Описание

Начиная с версии 1.0, Molecule Template поддерживает указание конкретных платформ для хостов в пресетах. Это позволяет автоматически фильтровать хосты, которые не поддерживаются на текущей архитектуре системы.

Обязательные требования

Для Astra Linux и RedOS во всех пресетах обязательно должно быть указано supported_platforms: ["linux/amd64"], так как эти системы не поддерживают arm64 архитектуру. Без этого указания могут возникать ошибки при запуске на ARM-системах.

Как это работает

Определение платформы

Система автоматически определяет архитектуру хоста при запуске:

  • x86_64linux/amd64
  • aarch64 / arm64linux/arm64
  • armv7llinux/arm/v7

Синтаксис в пресетах

В файлах пресетов (molecule/presets/*.yml) можно указать поле supported_platforms для каждого хоста:

hosts:
  - name: ubuntu-test
    family: ubuntu
    groups: [test]
    # Без supported_platforms - работает на всех платформах
    publish:
      - "8080:80"

  - name: astra-test
    family: astra
    groups: [test]
    supported_platforms: ["linux/amd64"]  # Только amd64
    publish:
      - "8083:80"

  - name: multi-test
    family: ubuntu
    groups: [test]
    supported_platforms: ["linux/amd64", "linux/arm64"]  # Несколько платформ
    publish:
      - "8084:80"

Правила фильтрации

  1. Если supported_platforms не указано - хост будет запущен на всех платформах
  2. Если supported_platforms: ["linux/amd64"] - хост запустится только на amd64
  3. Если supported_platforms: ["linux/amd64", "linux/arm64"] - хост запустится на обеих платформах

Примеры использования

Универсальный хост (работает везде)

- name: universal-test
  family: ubuntu
  groups: [test]
  # supported_platforms не указано = работает на всех платформах

Только для amd64

- name: amd64-only-test
  family: astra
  groups: [test]
  supported_platforms: ["linux/amd64"]

Для нескольких платформ

- name: multi-platform-test
  family: debian
  groups: [test]
  supported_platforms: ["linux/amd64", "linux/arm64"]

Реализация

Фильтрация происходит в файле molecule/default/create.yml:

  1. Система определяет текущую платформу
  2. Загружается пресет
  3. Хосты фильтруются по supported_platforms
  4. Отображается количество хостов для текущей платформы
# Фильтрация хостов по поддерживаемым платформам
- name: Filter hosts by supported platforms
  set_fact:
    filtered_hosts: "{{ filtered_hosts | default([]) + [item] }}"
  loop: "{{ hosts }}"
  when: |
    item.supported_platforms is not defined or
    ansible_architecture in item.supported_platforms

Текущее состояние

Хосты с ограничениями по платформе

  • Astra Linux - только linux/amd64 (нет нативной поддержки arm64)

    • Во всех пресетах имеет supported_platforms: ["linux/amd64"]
    • Базовый образ registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2 доступен только для amd64
  • RedOS - только linux/amd64 (нет нативной поддержки arm64)

    • Во всех пресетах имеет supported_platforms: ["linux/amd64"]
    • Базовый образ registry.red-soft.ru/ubi7/ubi доступен только для amd64

Важно: При запуске на arm64 системе эти хосты будут автоматически исключены из списка, что предотвратит ошибки при сборке и запуске контейнеров.

Универсальные хосты

Следующие системы работают на всех платформах:

  • Ubuntu 20.04, 22.04, 24.04
  • Debian 9, 10, 11, 12
  • Alt Linux
  • CentOS 7, 8, 9
  • RHEL
  • AlmaLinux
  • Rocky Linux

Примеры запуска

На amd64 (все 9 хостов)

make role test all-images
# Platform linux/amd64: 9 hosts will be deployed

На arm64 (7 хостов, без Astra и RedOS)

make role test all-images
# Platform linux/arm64: 7 hosts will be deployed

Дополнительная информация

  • Все образы загружаются с принудительным указанием платформы
  • Система автоматически адаптирует количество контейнеров под текущую платформу
  • Информация о количестве хостов отображается при запуске