Comcast.pypi

comcast.pypi

Un rol para aprovisionar un servidor pypi mínimo.

Variables del Rol

  • pypi_server_version: 'La versión del paquete pypiserver a instalar y usar. Predeterminado: 1.2.0.'
  • pypi_user: 'El usuario que ejecuta el servicio pypi-server. Se creará si no existe. Predeterminado: pypi.'
  • pypi_group: 'El grupo al que pertenece pypi_user. Predeterminado: pypi.'
  • pypi_server_port: 'El puerto en el que el pypi-server escuchará. Predeterminado: 7974.'
  • pypi_home_dir: 'El directorio home del usuario pypi. Predeterminado: /srv/pypi.'
  • pypi_work_dir: 'El directorio de trabajo del pypi-server. Predeterminado: {{ pypi_home_dir }}.'
  • pypi_packages_directory: 'El directorio que almacenará los paquetes de Python subidos. Predeterminado: {{ pypi_work_dir }}/packages.'
  • pypi_log_file: 'El archivo de registro en el que el pypi-server escribirá. Predeterminado: {{ pypi_work_dir }}/pypi-server.log.'
  • pypi_init_script_dir: 'El directorio que almacenará el script de inicio del pypi-server (solo sys-v). Predeterminado: /etc/init.d.'
  • pypi_server_pid_file: 'La ubicación del archivo . Predeterminado: {{ pypi_work_dir }}/pypi.pid.'
  • pypi_requirements_template: 'Plantilla que lista los paquetes requeridos para el pypi-server. Predeterminado: templates/pypi-server-requirements.txt.j2.'
  • pypi_server_authenticate: Lista de acciones separadas por comas para autenticar a un cliente, por ejemplo: download,list,update. Predeterminado: update.
  • htaccess_dir: 'La ubicación del archivo .htaccess generado. Predeterminado: {{ pypi_home_dir }}.'
  • enable_anonymous_auth: 'Un valor booleano que determina si se debe usar autenticación de nombre de usuario/contraseña para subidas al pypi-server. Nota: Habilitar esto no se recomienda ya que permitirá a cualquiera subir artefactos a pypi. Predeterminado: false.'
  • htaccess_username: 'Nombre de usuario para usar al autenticar al pypi-server (solo se utiliza cuando enable_anonymous_auth es false). Predeterminado: test.'
  • htaccess_password: 'Contraseña para usar al autenticar al pypi-server (solo se utiliza cuando enable_anonymous_auth es false). Predeterminado: test.'

Dependencias

Ninguna

Ejemplo de Playbook

Incluir un ejemplo de cómo usar tu rol (por ejemplo, con variables pasadas como parámetros) también es bueno para los usuarios:

    - hosts: servers
      roles:
         - role: comcast.pypi

Pruebas

Las siguientes herramientas son necesarias para probar este rol.

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

Crear ambiente de prueba:

virtualenv --python=$(which python2.7) .venv
source .venv/bin/activate
pip install -r test-reqs.txt

Ejecutar pruebas:

molecule test

Probar contra una plataforma específica:

molecule test --platform centos/7
molecule test --platform debian/jessie64

Pruebas de subidas:

Cualquier paquete de Python puede ser utilizado para probar la subida. En este caso, se usa BeautifulSoup4 como ejemplo.

  1. Levanta un servidor pypi local
molecule converge

Esto debería dejar el pypi-server corriendo en http://localhost:8080 con 0 paquetes almacenados.

  1. Clona un repositorio de código fuente en Python
git clone https://github.com/getanewsletter/BeautifulSoup4.git
  1. Crea/modifica el archivo .pypirc en tu directorio home y agrega las credenciales htaccess_username y htaccess_password si utilizas autenticación.

El archivo .pypirc debería verse similar a esto:

Nota: Si usas los valores predeterminados del playbook para htaccess_username y htaccess_password, entonces las credenciales deben coincidir con las del playbook.yml.

[distutils]
index-servers =
  local

[local]
repository: http://localhost:8080
username: <htaccess_username>
password: <htaccess_password>
  1. Sube el paquete de Python

Desde el repositorio de código fuente de Python ejecuta el siguiente comando.

python setup.py sdist upload -r local

Esto debería subir el paquete de Python al pypi-server especificado en el archivo .pypirc usando las credenciales especificadas en el bloque [local].

Prueba de descarga:

Para probar las descargas de paquetes desde el pypi-server local, se puede ejecutar el siguiente comando después de haber subido un paquete con éxito. Siguiendo el ejemplo de subida, beautifulsoup4 se puede descargar así:

Cambia version_number en el ejemplo a continuación para que coincida con la versión del paquete que se subió.

pip install --extra-index-url http://localhost:8080/ beautifulsoup4==<version_number>

Licencia

Apache 2.0

Información del Autor

Acerca del proyecto

A role to run a minimal pypi-server

Instalar
ansible-galaxy install Comcast.pypi
Licencia
apache-2.0
Descargas
15.6k
Propietario
Comcast brings together the best in media and technology to create the world's best entertainment and online experiences