suzuki-shunsuke.pyenv-module

ansible-pyenv-module

构建状态

这是一个用于运行 pyenv 命令的 ansible 模块。

https://galaxy.ansible.com/suzuki-shunsuke/pyenv-module/

注意事项

支持的平台

  • 一般Linux
  • MacOSX

我们在以下环境中测试了该模块

  • Ubuntu 16.04 (Vagrant, Virtualbox)
  • CentOS 7.3 (Vagrant, Virtualbox)
  • MacOS Sierra 10.12.5

需求

如果你想通过 ansible 角色安装 pyenv 和 python 构建依赖,我们推荐使用 suzuki-shunsuke.pyenv。 如果你想通过 ansible 角色安装 pyenv-virtualenv,我们推荐使用 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 的问题。

https://github.com/pyenv/pyenv-virtualenv/issues/161

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

提示

使用 pip 安装 python 包

目前该模块不支持 pip 子命令, 但你可以使用 官方 pip 模块 来实现。

# 使用 pip 模块之前安装 python 和创建 virtualenv
- 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

# 使用 executable 选项的 pip 模块
- name: 安装 ansible
  pip:
    name: ansible
    executable: "{{pyenv_root}}/versions/2.7.13/bin/pip"
- name:  virtualenv "yaml_env" 中安装 pyyaml
  pip:
    name: pyyaml
    executable: "{{pyenv_root}}/versions/yaml_env/bin/pip"

更新日志

请查看 CHANGELOG.md

另见

许可

MIT

开发

需求

  • Vagrant
  • Ansible
  • Node.js
  • yarn

设置

$ yarn install
$ cd tests
$ ansible-galaxy install -r roles.yml

测试

$ cd tests
$ vagrant up --provision
关于项目

run pyenv command

安装
ansible-galaxy install suzuki-shunsuke.pyenv-module
许可证
mit
下载
24.8k
拥有者
Platform Engineer / OSS Developer / Go