Оптимизация 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