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
要件
- pyenv
- Pythonのビルド依存性
- pyenv-virtualenv:
virtualenv
またはvirtualenvs
のサブコマンドを実行する場合に必要です。
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-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
ヒント
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を参照してください。
関連情報
- suzuki-shunsuke.pyenv: pyenvをインストールするためのansibleロール
- suzuki-shunsuke.pyenv-virtualenv: pyenv-virtualenvをインストールするためのansibleロール
ライセンス
開発
要件
- 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.pyenv-module