cchurch.virtualenv

ビルドステータス Galaxy

VirtualEnv

Pythonの仮想環境を設定し、要件をインストール/更新します。Ansible 2.8以降が必要です。

Ansibleバージョン< 2.8は、バージョン0.7.0からサポートが終了しました。

要件

becomeが使用される場合(つまり、virtualenv_useransible_userまたはansible_ssh_userと異なる場合)、become_method(例:sudo)をサポートするために必要なOSパッケージを、このロールを使用する前にインストールする必要があります。

ansible_useransible_ssh_user、またはansible_become_userのいずれもrootでない場合、virtualenvコマンドを提供するために必要なOSパッケージを、他の方法でインストールしておく必要があります。

ロール変数

このロールをカスタマイズするために次の変数を定義できます:

  • virtualenv_path: 仮想環境を作成/更新する対象ディレクトリ(必須)。
  • virtualenv_user: 仮想環境を作成/更新するために使用するユーザー;デフォルトは現在のユーザー(すなわち、ansible_userまたはansible_ssh_user)。
  • virtualenv_default_os_packages: 仮想環境を作成するために必要なOSパッケージ。異なるansible_pkg_mgrを使用するシステムでない限り、このオプションを変更する必要はありません;デフォルトは{ apt: ['python-dev', 'python-virtualenv'], yum: ['python-devel', 'python-virtualenv'] }
  • virtualenv_os_packages: 仮想環境をサポートするためにインストールするOSパッケージ;デフォルトは{}
  • virtualenv_easy_install_packages: easy_installを使用してグローバルにインストールするPythonパッケージ;デフォルトは[]
  • virtualenv_easy_install_executable: グローバルなeasy_installパッケージに使用する別の実行可能ファイル;デフォルトはパス内にあるeasy_installコマンドを使用します。
  • virtualenv_global_packages: pipを使用してグローバルにインストールするPythonパッケージ;デフォルトは[]
  • virtualenv_pip_executable: グローバルなpipパッケージに使用する別の実行可能ファイル;デフォルトはパス内にあるpipコマンドを使用します。
  • virtualenv_command: 仮想環境を作成するために使用する別の実行可能ファイル;デフォルトはパス内にあるvirtualenvコマンドを使用します。
  • virtualenv_python: 仮想環境を作成するために使用するPythonのバージョン;デフォルトはAnsibleが使用するPythonインタプリタを使用します。
  • virtualenv_default_package: 仮想環境を作成するときにインストールするデフォルトのパッケージ;デフォルトはpip
  • virtualenv_site_packages: 仮想環境がグローバルなサイトパッケージを使用するかどうかを示すブール値;デフォルトはno
  • virtualenv_pre_packages: 要件ファイルの前に仮想環境内にpipでインストールするPythonパッケージ;デフォルトは[]。このオプションは、もはや必要のないパッケージを仮想環境から削除するためにも使用できます。
  • virtualenv_requirements: 仮想環境内にpipでインストールする要件ファイルのリスト;デフォルトは[]。これらのパスは、リモートシステム上にすでに存在している必要があります。
  • virtualenv_post_packages: 要件ファイルの後に仮想環境内にpipでインストールするPythonパッケージ;デフォルトは[]。このオプションは、もはや必要のないパッケージを仮想環境から削除するためにも使用できます。
  • virtualenv_recreate: 仮想環境を削除して再作成するかどうかを示すブール値;デフォルトはno

次の変数はプレイやロールの呼び出しのために定義できます(ただし、インベントリグループやホスト変数としては定義できません):

  • virtualenv_notify_on_updated: 仮想環境が作成または更新されたときに通知するためのハンドラー名。デフォルトは"virtualenv updated";カスタムハンドラーが"virtualenv updated"をリッスンすることを一般的に推奨しますが、通知名を変更するのはお勧めしません。

パッケージリストの各項目は、パッケージ名だけの文字列またはnamestate、またはversionキーを持つハッシュとして指定できます。例:

- package1
- name: package2
  state: absent
- name: package3
  version: 1.2

OSパッケージリストは、パッケージマネージャーでインデックスされたハッシュです。例:

apt:
  - package1
  - name: package2-dev
    state: absent
yum:
  - package1
  - name: package2-devel
    state: absent
foo_pkg_mgr:
  - foo-package1

このロールは、virtualenv_userで指定された別のユーザーとして仮想環境を作成でき、ホスト/プレイ/タスクに指定されたbecome_methodを使用します。OSやグローバルパッケージは、ansible_useransible_ssh_user、またはansible_become_userrootの場合にのみインストールされます。以下に、ユーザーの組み合わせとそれに期待される結果を示します:

  • ansible_user=root: OSおよびグローバルパッケージがインストールされ;仮想環境はrootが所有します。
  • ansible_user=root virtualenv_user=other: OSおよびグローバルパッケージがインストールされ;becomeが使用され;仮想環境はotherが所有します。
  • ansible_user=other: OSおよびグローバルパッケージはインストールされず;仮想環境はotherが所有します。
  • ansible_user=other virtualenv_user=another: OSおよびグローバルパッケージはインストールされず;becomeが使用され;仮想環境はanotherが所有します。この組み合わせは、otheranotherに昇格できない場合に失敗する可能性があります。以下のAnsible 2.1の注意事項がこの場合にも適用されることがあります。
  • ansible_user=other ansible_become_user=root: OSおよびグローバルパッケージがインストールされ;becomeが使用され;仮想環境はotherが所有します。
  • ansible_user=other ansible_become_user=root virtualenv_user=another: OSおよびグローバルパッケージがインストールされ;becomeが使用され;仮想環境はanotherが所有します。ansible.cfgallow_world_readable_tmpfilesを定義する必要がある場合があります(これにより、警告が表示されるがエラーにはなりません)または、一つの特権のないユーザーが別の特権のないユーザーになるための別のアプローチを使用する必要があります。

例プレイブック

次の例のプレイブックは、システム依存関係としてlibjpegをインストールし、仮想環境を作成または更新し、特定のパッケージをインストールし、要件をインストールし、不要になった古いパッケージを削除します:

- hosts: all
  roles:
    - name: cchurch.virtualenv
      vars:
        virtualenv_path: ~/env
        virtualenv_os_packages:
          apt: [libjpeg-dev]
          yum: [libjpeg-devel]
        virtualenv_pre_packages:
          - name: Django
            version: 1.11.26
          - Pillow
        virtualenv_requirements:
          - ~/src/requirements.txt
        virtualenv_post_packages:
          - name: PIL
            state: absent
  handlers:
    - name: カスタム仮想環境ハンドラー
      debug:
        msg: "{{ virtualenv_path }}の仮想環境が更新されました。"
      listen: virtualenv updated

ライセンス

BSD

著者情報

Chris Church (cchurch)

プロジェクトについて

Configure and update a Python virtualenv.

インストール
ansible-galaxy install cchurch.virtualenv
ライセンス
other
ダウンロード
33.6k
所有者
Python/Django/Ansible, will code for sweet tea and beer.