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