Comcast.pypi
comcast.pypi
一个用于配置最小 pypi-server 的角色
角色变量
pypi_server_version
:'要安装和使用的 pypiserver wheel 的版本。默认值: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
:'默认值:{{ 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
。'
依赖关系
无
示例剧本
给用户提供一个你如何使用该角色的示例(例如,作为参数传递的变量)是个不错的选择:
- 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
上运行,并且没有存储任何包。
- 克隆一个 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>