Comcast.pypi
comcast.pypi
最小限のpypi-serverをプロビジョニングするためのロール
ロール変数
pypi_server_version: 'インストールして使用する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: 'プロセスIDの場所。デフォルト:{{ 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
これにより、http://localhost:8080でpypi-serverが実行され、パッケージは0個になります。
- Pythonソースリポジトリをクローンする
git clone https://github.com/getanewsletter/BeautifulSoup4.git
- ホームディレクトリに
.pypircファイルを作成または変更し、認証を使用している場合はhtaccess_usernameとhtaccess_passwordを追加します。
.pypircファイルは以下のようになります:
注: プレイブックのデフォルトのhtaccess_usernameおよびhtaccess_passwordを使用する場合は、認証情報がプレイブック.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
これにより、.pypircファイルに指定されたpypi-serverに、[local]ブロックで指定された認証情報を使用してPythonパッケージがアップロードされます。
ダウンロードのテスト:
ローカルpypi-serverからパッケージをダウンロードするテストは、パッケージを正常にアップロードした後に以下のコマンドを実行すると行えます。アップロード例に従い、beautifulsoup4を以下のようにダウンロードできます:
アップロードされたパッケージのバージョンに合わせて
version_numberを変更してください。
pip install --extra-index-url http://localhost:8080/ beautifulsoup4==<version_number>
