suzuki-shunsuke.pyenv-module
módulo-ansible-pyenv
Módulo de ansible para ejecutar comandos de pyenv.
https://galaxy.ansible.com/suzuki-shunsuke/pyenv-module/
Aviso
- Este módulo no soporta el modo de verificación
 
Plataformas soportadas
- GenericLinux
 - MacOSX
 
Probamos este módulo en
- Ubuntu 16.04 (Vagrant, Virtualbox)
 - CentOS 7.3 (Vagrant, Virtualbox)
 - MacOS Sierra 10.12.5
 
Requisitos
- pyenv
 - dependencias de compilación de python
 - pyenv-virtualenv: necesario si deseas ejecutar el subcomando 
virtualenvovirtualenvs 
Si deseas instalar pyenv y las dependencias de compilación de python con un rol de ansible, recomendamos suzuki-shunsuke.pyenv. Y si deseas instalar pyenv-virtualenv con un rol de ansible, recomendamos suzuki-shunsuke.pyenv-virtualenv.
Subcomandos y opciones de pyenv soportados
$ pyenv install [-s] [-f] <versión>
$ pyenv uninstall -f <versión>
$ pyenv install -l
$ pyenv versions [--bare]
$ pyenv global
$ pyenv global <versión> [<versión> ...]
$ pyenv virtualenv [-f] [--no-pip] [--no-setuptools] [--no-wheel] [--symlinks] [--copies] [--clear] [--without-pip] [versión] <nombre-del-virtualenv>
$ pyenv virtualenvs [--bare] [--skip-aliases]
Instalación
$ ansible-galaxy install suzuki-shunsuke.pyenv-module
# playbook.yml
- hosts: default
  roles:
  # Después de llamar a este rol, puedes usar este módulo.
  - suzuki-shunsuke.pyenv-module
Opciones
Además de este documento, consulta la referencia de comandos de pyenv y la salida del comando pyenv help <comando>.
Opciones comunes
| nombre | tipo | requerido | predeterminado | elecciones / ejemplo | descripción | 
|---|---|---|---|---|---|
| subcomando | str | no | install | [install, uninstall, versions, global, virtualenvs, virtualenv] | |
| pyenv_root | str | no | ~/.pyenv | Si la variable de entorno "PYENV_ROOT" no está establecida, esta opción es requerida | |
| expanduser | bool | no | yes | Por defecto, la variable de entorno PYENV_ROOT y la opción "pyenv_root" son filtradas por os.path.expanduser | 
Opciones del subcomando "install"
| parámetro | tipo | requerido | predeterminado | elecciones / ejemplo | descripción | 
|---|---|---|---|---|---|
| versión | str | no | 3.6.1 | ||
| lista | bool | no | no | opción -l | |
| saltar_existente | bool | no | yes | opción -s | |
| forzar | bool | no | no | opción -f | 
Se requiere ya sea la opción "versión" o "lista". Si se establece la opción "lista", el valor devuelto de esa tarea tendrá el campo "versions".
Opciones del subcomando "uninstall"
| parámetro | tipo | requerido | predeterminado | elecciones / ejemplo | descripción | 
|---|---|---|---|---|---|
| versión | str | sí | 2.7.13 | 
Opciones del subcomando "global"
| parámetro | tipo | requerido | predeterminado | elecciones | descripción | 
|---|---|---|---|---|---|
| versions | lista | no | 
El valor devuelto del subcomando "global" tiene el campo "versions".
Opciones del subcomando "versions"
| parámetro | tipo | requerido | predeterminado | elecciones | descripción | 
|---|---|---|---|---|---|
| bare | bool | no | yes | 
El valor devuelto del subcomando "versions" tiene el campo "versions".
Opciones del subcomando "virtualenvs"
| parámetro | tipo | requerido | predeterminado | elecciones | descripción | 
|---|---|---|---|---|---|
| skip_aliases | bool | no | yes | ||
| bare | bool | no | yes | 
El valor devuelto del subcomando "virtualenvs" tiene el campo "virtualenvs".
Opciones del subcomando "virtualenv"
https://github.com/pyenv/pyenv-virtualenv#virtualenv-and-venv
pyenv-virtualenvusapython -m venvsi está disponible y el comandovirtualenvno está disponible.
Las opciones del subcomando "virtualenv" dependen de si pyenv-virtualenv usa python -m venv o no.
Opciones comunes
| parámetro | tipo | requerido | predeterminado | ejemplo | descripción | 
|---|---|---|---|---|---|
| forzar | bool | no | no | ||
| versión | str | sí | 2.7.13 | ||
| nombre_virtualenv | str | sí | ansible | 
Aviso: la opción forzar no funciona como se espera
Este es un problema de pyenv-virtualenv.
Opciones de virtualenv
| parámetro | tipo | requerido | predeterminado | ejemplo | descripción | 
|---|---|---|---|---|---|
| siempre_copiar | bool | no | no | ||
| no_pip | bool | no | no | ||
| no_setuptools | bool | no | no | ||
| no_wheel | bool | no | no | 
Consulta la documentación oficial de virtualenv y la salida del comando virtualenv --help.
Opciones de python -m venv
| parámetro | tipo | requerido | predeterminado | ejemplo | descripción | 
|---|---|---|---|---|---|
| borrar | bool | no | no | ||
| copias | bool | no | no | ||
| symlinks | bool | no | no | ||
| sin_pip | bool | no | no | 
Consulta la documentación oficial de venv y la salida del comando python -m venv -h.
Aviso: la opción borrar no funciona como se espera
Este es un problema de pyenv-virtualenv.
Ejemplo
- 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
Consejos
Instalar paquetes de python con pip
Ahora este módulo no soporta el subcomando pip,
pero puedes hacerlo con el módulo pip oficial.
# instala python y crea virtualenv antes de usar el módulo 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
# utiliza el módulo pip con la opción executable
- name: install ansible
  pip:
    name: ansible
    executable: "{{pyenv_root}}/versions/2.7.13/bin/pip"
- name: install pyyaml en el virtualenv "yaml_env"
  pip:
    name: pyyaml
    executable: "{{pyenv_root}}/versions/yaml_env/bin/pip"
Registro de cambios
Consulta CHANGELOG.md.
También vea
- suzuki-shunsuke.pyenv: rol de ansible para instalar pyenv
 - suzuki-shunsuke.pyenv-virtualenv: rol de ansible para instalar pyenv-virtualenv
 
Licencia
Desarrollo
Requisitos
- Vagrant
 - Ansible
 - Node.js
 - yarn
 
Configuración
$ yarn install
$ cd tests
$ ansible-galaxy install -r roles.yml
Prueba
$ cd tests
$ vagrant up --provision
ansible-galaxy install suzuki-shunsuke.pyenv-module