- Заменено название проекта во всех файлах проекта - Обновлены: * README.md * Makefile * Все файлы документации (.md) * CI/CD конфигурации (Jenkins, GitLab, GitHub Actions, Azure DevOps) * Скрипты (setup-cicd.sh, test-custom-images.sh) * Файлы конфигурации Molecule - Изменена переменная PROJECT_NAME в Makefile на devops-lab - Docker образы inecs/ansible-lab:* оставлены без изменений (чтобы не затрагивать существующие образы в Docker Hub)
		
			
				
	
	
	
		
			5.6 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Поддержка платформ в пресетах
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0
Описание
DevOpsLab поддерживает указание конкретных платформ для хостов в пресетах. Это позволяет автоматически фильтровать хосты, которые не поддерживаются на текущей архитектуре системы.
Обязательные требования
Для Astra Linux и RedOS во всех пресетах обязательно должно быть указано supported_platforms: ["linux/amd64"], так как эти системы не поддерживают arm64 архитектуру. Без этого указания могут возникать ошибки при запуске на ARM-системах.
Как это работает
Определение платформы
Система автоматически определяет архитектуру хоста при запуске:
- x86_64→- linux/amd64
- aarch64/- arm64→- linux/arm64
- armv7l→- linux/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"
Правила фильтрации
- Если supported_platformsне указано - хост будет запущен на всех платформах
- Если supported_platforms: ["linux/amd64"]- хост запустится только на amd64
- Если 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:
- Система определяет текущую платформу
- Загружается пресет
- Хосты фильтруются по supported_platforms
- Отображается количество хостов для текущей платформы
# Фильтрация хостов по поддерживаемым платформам
- 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
Дополнительная информация
- Все образы загружаются с принудительным указанием платформы
- Система автоматически адаптирует количество контейнеров под текущую платформу
- Информация о количестве хостов отображается при запуске