suzuki-shunsuke.pyenv-module

ansible-pyenv-module

ビルドステータス

pyenvコマンドを実行するためのansibleモジュールです。

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

注意

対応プラットフォーム

  • GenericLinux
  • 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 いいえ yes デフォルトでは、環境変数PYENV_ROOTと「pyenv_root」オプションは、os.path.expanduserでフィルタリングされます。

「install」サブコマンドのオプション

パラメータ タイプ 必須 デフォルト 選択肢 / 例 説明
version str いいえ 3.6.1
list bool いいえ いいえ -lオプション
skip_existing bool いいえ yes -sオプション
force bool いいえ いいえ -fオプション

「version」または「list」オプションのいずれかが必要です。 「list」オプションが設定されている場合、そのタスクの戻り値には「versions」フィールドがあります。

「uninstall」サブコマンドのオプション

パラメータ タイプ 必須 デフォルト 選択肢 / 例 説明
version str はい 2.7.13

「global」サブコマンドのオプション

パラメータ タイプ 必須 デフォルト 選択肢 説明
versions list いいえ

「global」サブコマンドの戻り値には「versions」フィールドがあります。

「versions」サブコマンドのオプション

パラメータ タイプ 必須 デフォルト 選択肢 説明
bare bool いいえ yes

「versions」サブコマンドの戻り値には「versions」フィールドがあります。

「virtualenvs」サブコマンドのオプション

パラメータ タイプ 必須 デフォルト 選択肢 説明
skip_aliases bool いいえ yes
bare bool いいえ yes

「virtualenvs」サブコマンドの戻り値には「virtualenvs」フィールドがあります。

「virtualenv」サブコマンドのオプション

https://github.com/pyenv/pyenv-virtualenv#virtualenv-and-venv

pyenv-virtualenvpython -m venvが利用可能な場合はそれを使用し、virtualenvコマンドが利用できない場合に使用します。

「virtualenv」サブコマンドのオプションは、pyenv-virtualenvpython -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をインストールして仮想環境を作成します
- 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モジュールを使います
- name: ansibleをインストール
  pip:
    name: ansible
    executable: "{{pyenv_root}}/versions/2.7.13/bin/pip"
- name: 仮想環境「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