pypi
comcast.pypi
Роль для настройки минимального pypi-сервера
Переменные роли
pypi_server_version
: 'Версия wheel pypiserver для установки и использования. По умолчанию:1.2.0
.'pypi_user
: 'Пользователь, запускающий сервис pypi-server. Он будет создан, если не существует. По умолчанию:pypi
.'pypi_group
: 'Группа, членом которой является pypi_user. По умолчанию:pypi
.'pypi_server_port
: 'Порт, на котором будет слушать pypi-server. По умолчанию:7974
.'pypi_home_dir
: 'Домашняя директория пользователя pypi. По умолчанию:/srv/pypi
.'pypi_work_dir
: 'Рабочая директория pypi-server. По умолчанию:{{ pypi_home_dir }}
.'pypi_packages_directory
: 'Директория, в которой будут храниться загруженные пакеты Python. По умолчанию:{{ pypi_work_dir }}/packages
.'pypi_log_file
: 'Файл лога, в который будет записывать pypi-server. По умолчанию:{{ pypi_work_dir }}/pypi-server.log
.'pypi_init_script_dir
: 'Директория, в которой будет храниться инициализационный скрипт pypi-server (только sys-v). По умолчанию:/etc/init.d
.'pypi_server_pid_file
: 'Место расположения .pid файла. По умолчанию:{{ pypi_work_dir }}/pypi.pid
.'pypi_requirements_template
: 'Шаблон, перечисляющий необходимые пакеты для pypi-server. По умолчанию:templates/pypi-server-requirements.txt.j2
.'pypi_server_authenticate
: Список действий для аутентификации клиента, разделенный запятыми, напр.:download,list,update
. По умолчанию:update
.htaccess_dir
: 'Место расположения сгенерированного файла.htaccess
. По умолчанию:{{ pypi_home_dir }}
.'enable_anonymous_auth
: 'Булевое значение, определяющее, использовать ли аутентификацию по логину/паролю для загрузок на pypi-server. Внимание: включение этого параметра не рекомендуется, так как это позволит любому загружать артефакты на pypi. По умолчанию:false
.'htaccess_username
: 'Имя пользователя для аутентификации на pypi-server (используется только еслиenable_anonymous_auth
равно false). По умолчанию:test
.'htaccess_password
: 'Пароль для аутентификации на pypi-server (используется только еслиenable_anonymous_auth
равно false). По умолчанию:test
.'
Зависимости
Нет
Пример playbook
Включение примера использования вашей роли (например, с переменными, переданными как параметры) будет полезно пользователям:
- hosts: servers
roles:
- role: comcast.pypi
Тестирование
Для тестирования этой роли требуются следующие инструменты:
Создание тестовой среды:
virtualenv --python=$(which python2.7) .venv
source .venv/bin/activate
pip install -r test-reqs.txt
Запуск тестов:
molecule test
Тестирование на конкретной платформе:
molecule test --platform centos/7
molecule test --platform debian/jessie64
Тестирование загрузок:
Любой пакет Python можно использовать для тестирования загрузок. В этом случае в качестве примера используется BeautifulSoup4.
- Настройка локального pypi-сервера
molecule converge
Это должно запустить pypi-server на http://localhost:8080
с 0 загруженными пакетами.
- Клонирование репозитория с исходным кодом Python
git clone https://github.com/getanewsletter/BeautifulSoup4.git
- Создайте/измените файл
.pypirc
в вашей домашней директории и добавьте учетные данныеhtaccess_username
иhtaccess_password
, если используете аутентификацию.
Файл .pypirc
должен выглядеть следующим образом:
Внимание: Если вы используете значения по умолчанию для htaccess_username и htaccess_password, то учетные данные должны совпадать с теми, что указаны в playbook.yml
[distutils]
index-servers =
local
[local]
repository: http://localhost:8080
username: <htaccess_username>
password: <htaccess_password>
- Загрузка пакета Python
Из репозитория с исходным кодом Python выполните следующую команду.
python setup.py sdist upload -r local
Это должно загрузить пакет Python на указанный в файле .pypirc
pypi-server с использованием учетных данных, указанных в блоке [local]
.
Тестирование загрузки:
Чтобы протестировать загрузку пакетов с локального pypi-server, можно выполнить следующую команду после успешной загрузки пакета. Следуя примеру загрузки, beautifulsoup4 можно загрузить следующим образом:
Замените
version_number
на номер версии пакета, который был загружен.
pip install --extra-index-url http://localhost:8080/ beautifulsoup4==<version_number>
Лицензия
Информация об авторах
ansible-galaxy install Comcast/ansible-role-pypi