Comcast.pypi
comcast.pypi
Rola do provisionowania minimalnego serwera pypi
Zmienne Roli
pypi_server_version
: 'Wersja pakietu pypiserver do zainstalowania i użycia. Domyślnie:1.2.0
.'pypi_user
: 'Użytkownik, który uruchamia usługę pypi-server. Zostanie utworzony, jeśli nie istnieje. Domyślnie:pypi
.'pypi_group
: 'Grupa, do której należy użytkownik pypi_user. Domyślnie:pypi
.'pypi_server_port
: 'Port, na którym będzie nasłuchiwał pypi-server. Domyślnie:7974
.'pypi_home_dir
: 'Katalog domowy użytkownika pypi. Domyślnie:/srv/pypi
.'pypi_work_dir
: 'Katalog roboczy pypi-server. Domyślnie:{{ pypi_home_dir }}
.'pypi_packages_directory
: 'Katalog, który będzie przechowywał przesyłane pakiety Pythona. Domyślnie:{{ pypi_work_dir }}/packages
.'pypi_log_file
: 'Plik logu, do którego będzie pisał pypi-server. Domyślnie:{{ pypi_work_dir }}/pypi-server.log
.'pypi_init_script_dir
: 'Katalog, w którym będzie przechowywany skrypt inicjujący pypi-server (tylko sys-v). Domyślnie:/etc/init.d
.'pypi_server_pid_file
: 'Lokalizacja pliku .pid. Domyślnie:{{ pypi_work_dir }}/pypi.pid
.'pypi_requirements_template
: 'Szablon zawierający wymagane pakiety dla pypi-server. Domyślnie:templates/pypi-server-requirements.txt.j2
.'pypi_server_authenticate
: Lista działań oddzielona przecinkami, aby uwierzytelnić klienta, np.:download,list,update
. Domyślnie:update
.htaccess_dir
: 'Lokalizacja wygenerowanego pliku.htaccess
. Domyślnie:{{ pypi_home_dir }}
.'enable_anonymous_auth
: 'Wartość logiczna, która określa, czy używać uwierzytelniania za pomocą nazwy użytkownika/hasła do przesyłania na pypi-server. Uwaga: Włączenie tego nie jest zalecane, ponieważ pozwala każdemu na przesyłanie artefaktów do pypi. Domyślnie:false
.'htaccess_username
: 'Nazwa użytkownika do użycia przy uwierzytelnianiu do pypi-server (używana tylko wtedy, gdyenable_anonymous_auth
jest false). Domyślnie:test
.'htaccess_password
: 'Hasło do użycia przy uwierzytelnianiu do pypi-server (używane tylko wtedy, gdyenable_anonymous_auth
jest false). Domyślnie:test
.'
Zależności
Brak
Przykład Playbooka
Zaleca się dodanie przykładu, jak użyć roli (na przykład z przekazanymi zmiennymi jako parametry):
- hosts: servers
roles:
- role: comcast.pypi
Testowanie
Do przetestowania tej roli wymagane są następujące narzędzia.
Tworzenie środowiska testowego:
virtualenv --python=$(which python2.7) .venv
source .venv/bin/activate
pip install -r test-reqs.txt
Uruchom testy:
molecule test
Testuj na konkretnej platformie:
molecule test --platform centos/7
molecule test --platform debian/jessie64
Testuj przesyłanie:
Każdy pakiet Pythona może być użyty do testowania przesyłania. W tym przypadku użyto BeautifulSoup4 jako przykład.
- Uruchom lokalny serwer pypi
molecule converge
To powinno zostawić pypi-server działający na http://localhost:8080
bez przechowywanych pakietów.
- Sklonuj repozytorium źródłowe Pythona
git clone https://github.com/getanewsletter/BeautifulSoup4.git
- Utwórz/zmodyfikuj plik
.pypirc
w swoim katalogu domowym i dodaj dane logowaniahtaccess_username
ihtaccess_password
, jeśli używasz uwierzytelniania.
Plik .pypirc
powinien wyglądać podobnie do tego:
Uwaga: Jeśli używasz domyślnych wartości playbooka dla htaccess_username i htaccess_password, dane logowania powinny zgadzać się z tym, co jest w pliku playbook.yml
[distutils]
index-servers =
local
[local]
repository: http://localhost:8080
username: <htaccess_username>
password: <htaccess_password>
- Prześlij pakiet Pythona
Z katalogu źródłowego Pythona wykonaj następujące polecenie.
python setup.py sdist upload -r local
To powinno przesłać pakiet Pythona do pypi-server określonego w pliku .pypirc
za pomocą danych logowania określonych w bloku [local]
.
Testuj pobieranie:
Aby przetestować pobieranie pakietów z lokalnego pypi-server, można wykonać poniższe polecenie po pomyślnym przesłaniu pakietu. Po przesłaniu przykładu, beautifulsoup4 można pobrać w następujący sposób:
Zmień version_number w poniższym przykładzie, aby pasował do wersji przesłanego pakietu.
pip install --extra-index-url http://localhost:8080/ beautifulsoup4==<version_number>
Licencja
Informacje o autorze
ansible-galaxy install Comcast.pypi