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 cuandoenable_anonymous_auth
es false). Predeterminado:test
.'htaccess_password
: 'Contraseña para usar al autenticar al pypi-server (solo se utiliza cuandoenable_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.
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.
- Levanta un servidor pypi local
molecule converge
Esto debería dejar el pypi-server corriendo en http://localhost:8080
con 0
paquetes almacenados.
- Clona un repositorio de código fuente en Python
git clone https://github.com/getanewsletter/BeautifulSoup4.git
- Crea/modifica el archivo
.pypirc
en tu directorio home y agrega las credencialeshtaccess_username
yhtaccess_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
yhtaccess_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>
- 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
Información del Autor
ansible-galaxy install Comcast.pypi