feat: Добавлена роль Python 3.12 и восстановлена роль Docker
- Создана универсальная роль Python для установки Python 3.12 на всех ОС - Восстановлена роль Docker из git истории - Исправлены все ошибки линтера - Обновлен deploy.yml с правильным порядком ролей: devops → python → docker - Удалена устаревшая роль ping - Добавлена поддержка альтернативных репозиториев для старых ОС Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
		
							
								
								
									
										246
									
								
								roles/python/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										246
									
								
								roles/python/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,246 @@ | ||||
| # Роль Python 3.12 | ||||
|  | ||||
| Универсальная Ansible роль для установки Python 3.12 на различных дистрибутивах Linux. | ||||
|  | ||||
| **Автор:** Сергей Антропов   | ||||
| **Сайт:** https://devops.org.ru | ||||
|  | ||||
| ## Описание | ||||
|  | ||||
| Эта роль обеспечивает универсальную установку Python 3.12 на различных дистрибутивах Linux, включая: | ||||
|  | ||||
| - **Ubuntu** (20.04, 22.04, 24.04) | ||||
| - **Debian** (10, 11, 12) | ||||
| - **CentOS** (7, 8, 9) | ||||
| - **RHEL** (7, 8, 9) | ||||
| - **Rocky Linux** (8, 9) | ||||
| - **AlmaLinux** (8, 9) | ||||
| - **Fedora** (35+) | ||||
| - **openSUSE** (15.3+) | ||||
|  | ||||
| Роль автоматически определяет дистрибутив и использует соответствующий метод установки: | ||||
| - Установка из пакетов (если доступно) | ||||
| - Компиляция из исходного кода (если пакеты недоступны) | ||||
| - Автоматическое обновление pip до последней версии | ||||
| - Создание символических ссылок для удобства использования | ||||
| - Поддержка виртуальных окружений | ||||
|  | ||||
| ## Требования | ||||
|  | ||||
| - Ansible >= 2.9 | ||||
| - Python 2.7 или 3.5+ на управляющей машине | ||||
| - Привилегии sudo на целевых хостах | ||||
|  | ||||
| ## Переменные | ||||
|  | ||||
| ### Основные переменные | ||||
|  | ||||
| | Переменная | По умолчанию | Описание | | ||||
| |------------|--------------|----------| | ||||
| | `python_version` | `"3.12"` | Версия Python для установки | | ||||
| | `python_packages` | `["pip", "setuptools", "wheel", "virtualenv"]` | Дополнительные пакеты Python | | ||||
| | `python_install_prefix` | `"/usr/local"` | Префикс для установки Python | | ||||
| | `python_create_symlinks` | `true` | Создание символических ссылок | | ||||
| | `python_update_pip` | `true` | Автоматическое обновление pip до последней версии | | ||||
| | `python_pip_packages` | `[]` | Дополнительные pip пакеты | | ||||
| | `python_create_venv` | `false` | Создание виртуального окружения | | ||||
| | `python_venv_path` | `"/opt/python-venv"` | Путь для виртуального окружения | | ||||
| | `python_setup_alternatives` | `true` | Настройка альтернатив (RHEL) | | ||||
| | `python_remove_old_versions` | `false` | Удаление старых версий Python | | ||||
| | `python_log_level` | `"INFO"` | Уровень логирования | | ||||
|  | ||||
| ### Переменные для разных ОС | ||||
|  | ||||
| Роль автоматически определяет переменные на основе `ansible_os_family` и `ansible_distribution`: | ||||
|  | ||||
| - `python_current_packages` - пакеты Python для текущей ОС | ||||
| - `python_current_build_deps` - системные зависимости для компиляции | ||||
| - `python_current_package_manager` - менеджер пакетов | ||||
| - `python_current_executable` - путь к исполняемому файлу Python | ||||
| - `python_current_pip` - путь к pip | ||||
|  | ||||
| ## Примеры использования | ||||
|  | ||||
| ### Базовое использование | ||||
|  | ||||
| ```yaml | ||||
| - hosts: all | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ### С дополнительными пакетами | ||||
|  | ||||
| ```yaml | ||||
| - hosts: all | ||||
|   vars: | ||||
|     python_pip_packages: | ||||
|       - requests | ||||
|       - flask | ||||
|       - django | ||||
|     python_create_venv: true | ||||
|     python_venv_path: "/opt/myapp-venv" | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ### С компиляцией из исходного кода | ||||
|  | ||||
| ```yaml | ||||
| - hosts: all | ||||
|   vars: | ||||
|     python_install_prefix: "/opt/python3.11" | ||||
|     python_create_symlinks: true | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ### Для конкретной версии Python | ||||
|  | ||||
| ```yaml | ||||
| - hosts: all | ||||
|   vars: | ||||
|     python_version: "3.12.0" | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ## Поддерживаемые дистрибутивы | ||||
|  | ||||
| ### Debian/Ubuntu | ||||
|  | ||||
| Роль использует репозиторий `deadsnakes` для установки Python 3.12: | ||||
|  | ||||
| ```yaml | ||||
| - hosts: ubuntu_servers | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ### RHEL/CentOS/Rocky/AlmaLinux | ||||
|  | ||||
| Роль использует EPEL репозиторий для установки Python 3.12: | ||||
|  | ||||
| ```yaml | ||||
| - hosts: rhel_servers | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ### Fedora | ||||
|  | ||||
| ```yaml | ||||
| - hosts: fedora_servers | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ### openSUSE | ||||
|  | ||||
| ```yaml | ||||
| - hosts: suse_servers | ||||
|   roles: | ||||
|     - python | ||||
| ``` | ||||
|  | ||||
| ## Альтернативные репозитории | ||||
|  | ||||
| Для старых дистрибутивов, которые не поддерживают Python 3.12 из стандартных репозиториев, роль автоматически использует альтернативные источники: | ||||
|  | ||||
| ### RHEL/CentOS 7 | ||||
| - **IUS Repository**: Предоставляет современные версии Python | ||||
| - **SCL (Software Collections)**: Для очень старых систем | ||||
| - **EPEL**: Дополнительные пакеты | ||||
|  | ||||
| ### Debian/Ubuntu старых версий | ||||
| - **deadsnakes PPA**: Предоставляет Python 3.12 для старых версий | ||||
| - **Альтернативные пакеты**: Python 3.11 если 3.12 недоступен | ||||
|  | ||||
| ### Автоматическое переключение | ||||
| Роль автоматически пытается установить Python 3.12, а если это невозможно, переключается на доступную версию (3.11) или использует альтернативные репозитории. | ||||
|  | ||||
| ## Структура роли | ||||
|  | ||||
| ``` | ||||
| roles/python/ | ||||
| ├── defaults/ | ||||
| │   └── main.yml          # Переменные по умолчанию | ||||
| ├── handlers/ | ||||
| │   └── main.yml          # Обработчики событий | ||||
| ├── meta/ | ||||
| │   └── main.yml          # Метаданные роли | ||||
| ├── tasks/ | ||||
| │   └── main.yml          # Основные задачи | ||||
| ├── vars/ | ||||
| │   └── main.yml          # Переменные для разных ОС | ||||
| └── README.md             # Документация | ||||
| ``` | ||||
|  | ||||
| ## Логирование | ||||
|  | ||||
| Роль поддерживает подробное логирование. Установите `python_log_level: "DEBUG"` для получения детальной информации о процессе установки. | ||||
|  | ||||
| ## Обработка ошибок | ||||
|  | ||||
| Роль включает проверки на каждом этапе: | ||||
|  | ||||
| 1. Проверка наличия Python перед установкой | ||||
| 2. Проверка успешности установки | ||||
| 3. Проверка работоспособности pip | ||||
| 4. Очистка временных файлов | ||||
|  | ||||
| ## Производительность | ||||
|  | ||||
| - Использует параллельную компиляцию (количество ядер CPU) | ||||
| - Оптимизированная конфигурация Python с LTO | ||||
| - Кэширование пакетов | ||||
| - Очистка временных файлов | ||||
|  | ||||
| ## Безопасность | ||||
|  | ||||
| - Проверка целостности загружаемых файлов | ||||
| - Использование официальных репозиториев | ||||
| - Минимальные привилегии для установки | ||||
|  | ||||
| ## Устранение неполадок | ||||
|  | ||||
| ### Python не найден после установки | ||||
|  | ||||
| ```bash | ||||
| # Проверьте символические ссылки | ||||
| ls -la /usr/bin/python3* | ||||
|  | ||||
| # Обновите библиотеки | ||||
| sudo ldconfig | ||||
| ``` | ||||
|  | ||||
| ### Ошибки компиляции | ||||
|  | ||||
| ```bash | ||||
| # Установите системные зависимости | ||||
| sudo apt install build-essential  # Ubuntu/Debian | ||||
| sudo dnf groupinstall "Development Tools"  # RHEL/CentOS | ||||
| ``` | ||||
|  | ||||
| ### Проблемы с pip | ||||
|  | ||||
| ```bash | ||||
| # Обновите pip | ||||
| python3 -m pip install --upgrade pip | ||||
|  | ||||
| # Проверьте версию | ||||
| pip3 --version | ||||
| ``` | ||||
|  | ||||
| ## Лицензия | ||||
|  | ||||
| MIT | ||||
|  | ||||
| ## Автор | ||||
|  | ||||
| **Сергей Антропов**   | ||||
| Сайт: https://devops.org.ru | ||||
|  | ||||
| ## Поддержка | ||||
|  | ||||
| Для получения поддержки или сообщения об ошибках, пожалуйста, создайте issue в репозитории проекта. | ||||
		Reference in New Issue
	
	Block a user