前置き
業務上、CentOS 6.4 上にて Ansible 1.9.1 (本記事投稿時の最新の安定版) を動作させたかったのだが、色々と課題があったのでどう対応したのかを綴る。
何が問題だったのか
yum で入る Ansible のバージョンが 1.1 だった。そこで pip を使って最新版を導入しようとしたところ、依存ライブラリである pycripto2.6 がまともにインストールできずにハマった。
やったこと
概要
Ansible 1.9 のためには pycrpto2.6 等の依存ライブラリが必要で、pycrypto2.6 のためには gmp5 と python-devel が必要。
手順
まずは gmp5 を入れる
こちらに従った。
python-devel を入れる
これがないと、pycrypto2.6 が入らない (native extension のビルドに失敗する系かな)。
$ sudo yum install python-devel
pip を入れる
pip 経由でないと、Ansible とその依存ライブラリ (Python系) のインストールが面倒。
$ sudo yum install python-pip
Ansible の依存ライブラリを入れる
sudo pip install
で以下を入れる。
- paramiko
- jinja2
- PyYAML
- setuptools
- pycrypto
一部、なくてもいいかも知れない。古いバージョンが最初から入っているのは--upgrade
オプションが必要。
この辺、細かい作業記録をつけなかったのでちょっと曖昧。
ただ、上記はいずれも Ansible の依存ライブラリなので、全て最新版を入れておいても支障はないだろう。
Ansible 本体を入れる
ここで漸く。
$ sudo pip install ansible
以下のコマンドでインストール状況を確認。
バージョンが 1.9.1 だったり、使うコマンドがパスの通ったところに入っていることが確認できればよい。
$ ansible --version
$ which ansible-playbook
$ which ansible-galaxy
playbook で上記を書くとこんな感じ
---
# gmp5 がないと pycrypto2.6 が入らない
- name: gmp5 のダウンロード
get_url: >
url=ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.5.tar.bz2
dest=/usr/local/src/gmp-5.0.5.tar.bz2
- name: gmp5 の解凍
shell: >
bzip2 -dc gmp-5.0.5.tar.bz2 | tar xvf -
chdir=/usr/local/src
creates=/usr/local/src/gmp-5.0.5
# オプションは /usr/local 配下へのインストールと C++ サポートの有効化
- name: gmp5 の configure
command: >
./configure --prefix=/usr/local --enable-cxx
chdir=/usr/local/src/gmp-5.0.5
creates=/usr/local/src/gmp-5.0.5/Makefile
- name: gmp5 の make
command: >
make
chdir=/usr/local/src/gmp-5.0.5
creates=/usr/local/src/gmp-5.0.5/libgmpxx.la
- name: gmp5 のインストール
command: >
make install
chdir=/usr/local/src/gmp-5.0.5
creates=/usr/local/lib/libgmpxx.la
# これがないと pycrypto2.6 が入らない
- name: python-devel のインストール
yum: >
name=python-devel
state=latest
# これがないと新しい ansible や pycrypto 等を入れるのが大変
- name: pip のインストール
yum: >
name=python-pip
state=latest
- name: ansible に必要な python ライブラリをインストール
pip: >
name={{ item }}
state=latest
with_items:
- paramiko
- jinja2
- PyYAML
- setuptools
- pycrypto
- name: ansible のインストール
pip: >
name=ansible
version=1.9.1