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

Тестирование

Для тестирования этой роли требуются следующие инструменты:

  1. Virtualbox
  2. Vagrant
  3. Python 2.7
  4. virtualenv

Создание тестовой среды:

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.

  1. Настройка локального pypi-сервера
molecule converge

Это должно запустить pypi-server на http://localhost:8080 с 0 загруженными пакетами.

  1. Клонирование репозитория с исходным кодом Python
git clone https://github.com/getanewsletter/BeautifulSoup4.git
  1. Создайте/измените файл .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>
  1. Загрузка пакета 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>

Лицензия

Apache 2.0

Информация об авторах

О проекте

A role to run a minimal pypi-server

Установить
ansible-galaxy install Comcast/ansible-role-pypi
Лицензия
apache-2.0
Загрузки
15556
Владелец
Comcast brings together the best in media and technology to create the world's best entertainment and online experiences