Оптимизация Dockerfile: убраны лишние пакеты и закомментированы Docker/yq
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
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
- Убраны пакеты: vim, jq, git, htop, tree из всех Dockerfile - Закомментированы установки Docker, Docker Compose, yq - Обновлен Rocky Linux до версии 9 с Python 3 - Исправлена проблема с passlib в ansible-controller - Оставлены только необходимые пакеты: systemd, curl, wget, nano, python3, sudo
This commit is contained in:
148
docs/platform-support.md
Normal file
148
docs/platform-support.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# Поддержка платформ в пресетах
|
||||
|
||||
## Автор
|
||||
Сергей Антропов
|
||||
Сайт: https://devops.org.ru
|
||||
|
||||
## Описание
|
||||
|
||||
Начиная с версии 1.0, Molecule Template поддерживает указание конкретных платформ для хостов в пресетах. Это позволяет автоматически фильтровать хосты, которые не поддерживаются на текущей архитектуре системы.
|
||||
|
||||
## Обязательные требования
|
||||
|
||||
**Для 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` для каждого хоста:
|
||||
|
||||
```yaml
|
||||
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"]`** - хост запустится на обеих платформах
|
||||
|
||||
### Примеры использования
|
||||
|
||||
#### Универсальный хост (работает везде)
|
||||
```yaml
|
||||
- name: universal-test
|
||||
family: ubuntu
|
||||
groups: [test]
|
||||
# supported_platforms не указано = работает на всех платформах
|
||||
```
|
||||
|
||||
#### Только для amd64
|
||||
```yaml
|
||||
- name: amd64-only-test
|
||||
family: astra
|
||||
groups: [test]
|
||||
supported_platforms: ["linux/amd64"]
|
||||
```
|
||||
|
||||
#### Для нескольких платформ
|
||||
```yaml
|
||||
- name: multi-platform-test
|
||||
family: debian
|
||||
groups: [test]
|
||||
supported_platforms: ["linux/amd64", "linux/arm64"]
|
||||
```
|
||||
|
||||
## Реализация
|
||||
|
||||
Фильтрация происходит в файле `molecule/default/create.yml`:
|
||||
|
||||
1. Система определяет текущую платформу
|
||||
2. Загружается пресет
|
||||
3. Хосты фильтруются по `supported_platforms`
|
||||
4. Отображается количество хостов для текущей платформы
|
||||
|
||||
```yaml
|
||||
# Фильтрация хостов по поддерживаемым платформам
|
||||
- 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
|
||||
- Debian
|
||||
- Alt Linux
|
||||
- CentOS
|
||||
- RHEL
|
||||
- AlmaLinux
|
||||
- Rocky Linux
|
||||
|
||||
## Примеры запуска
|
||||
|
||||
### На amd64 (все 9 хостов)
|
||||
```bash
|
||||
make role test all-images
|
||||
# Platform linux/amd64: 9 hosts will be deployed
|
||||
```
|
||||
|
||||
### На arm64 (7 хостов, без Astra и RedOS)
|
||||
```bash
|
||||
make role test all-images
|
||||
# Platform linux/arm64: 7 hosts will be deployed
|
||||
```
|
||||
|
||||
## Дополнительная информация
|
||||
|
||||
- Все образы загружаются с принудительным указанием платформы
|
||||
- Система автоматически адаптирует количество контейнеров под текущую платформу
|
||||
- Информация о количестве хостов отображается при запуске
|
||||
|
||||
Reference in New Issue
Block a user