virtualenvでAnsible実行環境を作る方法です。いつも忘れてしまうのでメモ。

注意点

  • このページのコマンドはCentOS7環境での例です。CentOS6や他のディストーションを使っている人は適宜読み替えてください
  • 2017/08現在、AnsibleはPython3未対応なのでPython2を使いましょう

virtualenvをインストールする

これはAnsible固有ではなく、普通のvirtualenvインストール方法です。

[vagrant@centos7 ~]$ sudo yum install -y python-devel
[vagrant@centos7 ~]$ sudo yum install -y --enablerepo=epel python2-pip
[vagrant@centos7 ~]$ sudo pip install --upgrade pip
[vagrant@centos7 ~]$ sudo pip install virtualenv

virtualenvで仮想環境を作成する

複数のplaybookをメンテしていて、その全てが最新のAnsibleで動かないって人は、Ansibleバージョン毎に仮想環境を作ると便利だと思います。

virtualenvコマンドの引数が、仮想環境に入った時のプロンプト表示に使われます。

[vagrant@centos7 ~]$ mkdir ~/ansible_venv
[vagrant@centos7 ~]$ cd $_
[vagrant@centos7 ansible_venv]$ virtualenv 2.3.2.0
[vagrant@centos7 ansible_venv]$ source ~/ansible_venv/2.3.2.0/bin/activate

仮想環境にAnsibleをインストールする

バージョン指定でインストールする場合は以下のように、pip install ansible==2.3.2.0とします。
最新バージョンで良い場合は、pip install ansibleでもOKです。

(2.3.2.0) [vagrant@centos7 ansible_venv]$ pip install ansible==2.3.2.0
(2.3.2.0) [vagrant@centos7 ansible_venv]$ which ansible
~/ansible_venv/2.3.2.0/bin/ansible
(2.3.2.0) [vagrant@centos7 ansible_venv]$ ansible --version
ansible 2.3.2.0
  config file =
  configured module search path = Default w/o overrides
  python version = 2.7.5 (default, Nov  6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

以上で仮想環境に隔離されたAnsible実行環境が出来ました。

仮想環境から抜ける方法と入る方法は以下です。

仮想環境から抜ける

(2.3.2.0) [vagrant@centos7 ~]$ deactivate

仮想環境に入る

サーバにログインする度に仮想環境に入る必要があります。
virtualenvwrapperってやつを使えばちょっと便利になるっぽいですが、僕は使ってません。

[vagrant@centos7 ~]$ source ~/ansible_venv/2.3.2.0/bin/activate

参考URL