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>