pyenv-module
ansible-pyenv-module
Ansible модуль для выполнения команд pyenv.
https://galaxy.ansible.com/suzuki-shunsuke/pyenv-module/
Уведомление
- Этот модуль не поддерживает режим проверки
Поддерживаемые платформы
- GenericLinux
- MacOSX
Мы тестируем этот модуль на
- Ubuntu 16.04 (Vagrant, Virtualbox)
- CentOS 7.3 (Vagrant, Virtualbox)
- MaxOS Sierra 10.12.5
Требования
- pyenv
- зависимости для сборки Python
- pyenv-virtualenv: требуется, если вы хотите использовать подкоманду
virtualenv
илиvirtualenvs
Если вы хотите установить pyenv и зависимости для сборки Python с помощью ролевого файла Ansible, мы рекомендуем suzuki-shunsuke.pyenv. Если вы хотите установить pyenv-virtualenv с помощью ролевого файла Ansible, мы рекомендуем suzuki-shunsuke.pyenv-virtualenv.
Поддерживаемые подкоманды и опции pyenv
$ pyenv install [-s] [-f] <version>
$ pyenv uninstall -f <version>
$ pyenv install -l
$ pyenv versions [--bare]
$ pyenv global
$ pyenv global <version> [<version> ...]
$ pyenv virtualenv [-f] [--no-pip] [--no-setuptools] [--no-wheel] [--symlinks] [--copies] [--clear] [--without-pip] [version] <virtualenv-name>
$ pyenv virtualenvs [--bare] [--skip-aliases]
Установка
$ ansible-galaxy install suzuki-shunsuke.pyenv-module
# playbook.yml
- hosts: default
roles:
# После вызова этой роли, вы сможете использовать этот модуль.
- suzuki-shunsuke.pyenv-module
Опции
В дополнение к этому документу, пожалуйста, см. справочник команд pyenv и вывод команды pyenv help <command>
.
Общие опции
имя | тип | обязательный | по умолчанию | выборы / пример | описание |
---|---|---|---|---|---|
subcommand | str | нет | install | [install, uninstall, versions, global, virtualenvs, virtualenv] | |
pyenv_root | str | нет | ~/.pyenv | Если переменная окружения "PYENV_ROOT" не установлена, эта опция обязательна | |
expanduser | bool | нет | да | По умолчанию переменная окружения PYENV_ROOT и опция "pyenv_root" обрабатываются с помощью os.path.expanduser |
Опции для подкоманды "install"
параметр | тип | обязательный | по умолчанию | выборы / пример | описание |
---|---|---|---|---|---|
version | str | нет | 3.6.1 | ||
list | bool | нет | нет | -l опция | |
skip_existing | bool | нет | да | -s опция | |
force | bool | нет | нет | -f опция |
Необходима либо опция "version", либо "list". Если установлена опция "list", возвращаемое значение этой задачи содержит поле "versions".
Опции для подкоманды "uninstall"
параметр | тип | обязательный | по умолчанию | выборы / пример | описание |
---|---|---|---|---|---|
version | str | да | 2.7.13 |
Опции для подкоманды "global"
параметр | тип | обязательный | по умолчанию | выборы | описание |
---|---|---|---|---|---|
versions | list | нет |
Возвращаемое значение подкоманды "global" содержит поле "versions".
Опции для подкоманды "versions"
параметр | тип | обязательный | по умолчанию | выборы | описание |
---|---|---|---|---|---|
bare | bool | нет | да |
Возвращаемое значение подкоманды "versions" содержит поле "versions".
Опции для подкоманды "virtualenvs"
параметр | тип | обязательный | по умолчанию | выборы | описание |
---|---|---|---|---|---|
skip_aliases | bool | нет | да | ||
bare | bool | нет | да |
Возвращаемое значение подкоманды "virtualenvs" содержит поле "virtualenvs".
Опции для подкоманды "virtualenv"
https://github.com/pyenv/pyenv-virtualenv#virtualenv-and-venv
pyenv-virtualenv
используетpython -m venv
, если это доступно, и командаvirtualenv
не доступна.
Опции подкоманды "virtualenv" зависят от того, использует ли pyenv-virtualenv
python -m venv
или нет.
Общие опции
параметр | тип | обязательный | по умолчанию | пример | описание |
---|---|---|---|---|---|
force | bool | нет | нет | ||
version | str | да | 2.7.13 | ||
virtualenv_name | str | да | ansible |
Уведомление: опция force не работает как ожидалось
Это проблема pyenv-virtualenv.
Опции virtualenv
параметр | тип | обязательный | по умолчанию | пример | описание |
---|---|---|---|---|---|
always_copy | bool | нет | нет | ||
no_pip | bool | нет | нет | ||
no_setuptools | bool | нет | нет | ||
no_wheel | bool | нет | нет |
Смотрите официальную документацию virtualenv и вывод команды virtualenv --help
.
Опции python -m venv
параметр | тип | обязательный | по умолчанию | пример | описание |
---|---|---|---|---|---|
clear | bool | нет | нет | ||
copies | bool | нет | нет | ||
symlinks | bool | нет | нет | ||
without_pip | bool | нет | нет |
Смотрите официальную документацию venv и вывод команды python -m venv -h
.
Уведомление: опция clear не работает как ожидалось
Это проблема pyenv-virtualenv.
Пример
- name: pyenv install -s 3.6.1
pyenv:
version: 3.6.1
pyenv_root: "~/.pyenv"
- name: pyenv install -f 3.6.1
pyenv:
version: 3.6.1
pyenv_root: "~/.pyenv"
force: yes
- name: pyenv uninstall -f 2.6.9
pyenv:
subcommand: uninstall
version: 2.6.9
pyenv_root: "~/.pyenv"
- name: pyenv global 3.6.1
pyenv:
subcommand: global
versions:
- 3.6.1
pyenv_root: "~/.pyenv"
- name: pyenv global
pyenv:
subcommand: global
pyenv_root: "~/.pyenv"
register: result
- debug:
var: result.versions
- name: pyenv install -l
pyenv:
list: yes
pyenv_root: "{{ansible_env.HOME}}/.pyenv"
register: result
- debug:
var: result.versions
- name: pyenv versions --bare
pyenv:
subcommand: versions
pyenv_root: "{{ansible_env.HOME}}/.pyenv"
register: result
- debug:
var: result.versions
- name: pyenv virtualenvs --skip-aliases --bare
pyenv:
subcommand: virtualenvs
pyenv_root: "~/.pyenv"
register: result
- debug:
var: result.virtualenvs
- name: pyenv virtualenv --force 2.7.13 ansible
pyenv:
subcommand: virtualenv
pyenv_root: "~/.pyenv"
version: 2.7.13
virtualenv_name: ansible
force: yes
Советы
Установка пакетов Python с помощью pip
На данный момент этот модуль не поддерживает подкоманду pip
, но вы можете сделать это с помощью официального модуля pip.
# установите Python и создайте виртуальное окружение перед использованием модуля pip
- name: pyenv install -s 2.7.13
pyenv:
pyenv_root: "{{pyenv_root}}"
version: 2.7.13
- name: pyenv virtualenv 3.6.1 yaml_env
pyenv:
subcommand: virtualenv
pyenv_root: "{{pyenv_root}}"
version: 3.6.1
virtualenv_name: yaml_env
# используйте модуль pip с опцией executable
- name: install ansible
pip:
name: ansible
executable: "{{pyenv_root}}/versions/2.7.13/bin/pip"
- name: install pyyaml on the virtualenv "yaml_env"
pip:
name: pyyaml
executable: "{{pyenv_root}}/versions/yaml_env/bin/pip"
Журнал изменений
Смотрите CHANGELOG.md.
Смотрите также
- suzuki-shunsuke.pyenv: ролевой файл Ansible для установки pyenv
- suzuki-shunsuke.pyenv-virtualenv: ролевой файл Ansible для установки pyenv-virtualenv
Лицензия
Разработка
Требования
- Vagrant
- Ansible
- Node.js
- yarn
Установка
$ yarn install
$ cd tests
$ ansible-galaxy install -r roles.yml
Тестирование
$ cd tests
$ vagrant up --provision
ansible-galaxy install suzuki-shunsuke/ansible-pyenv-module