あいしんくいっとオススメ商品レビュー

構成管理ツールAnsibleを使ってサーバ構築を自動化する!①

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

最近はDockerネタが多かったのですが、区切りとしてたWordPress構築まで終わったので新しいネタをば。
流行りのDockerの使い方について触って覚える (CentOS7編)① 流行りのDockerの使い方について触って覚える (CentOS7編)② 流行りのDockerの使い方について触って覚える (CentOS7編)③ 流行りのDockerの使い方について触って覚える (CentOS7編)④ Dockerの使い方について触って覚える(WordPress構築)⑤

インフラエンジニアにとってサーバ構築は避けて通る事の出来ないルーチンワークになります。
まして、同一設定の複数台のサーバを構築するとなるとその手間は言わずもがな・・・。

クラウド環境であれば雛形を構築し、クローンを作成して・・・、といった手段も取れるのですが、物理環境となるとそうは行きません。
設定が同じ複数台のサーバを手作業で同時に構築するのは大変な作業ですし、手作業だと設定差異が出るのは必至です。

そういった時は構成管理ツールの出番となります。
構成管理ツールとして有名なのは「Chef」、「Puppet」、そして今回取り上げる「Ansible」といったものになります。
AnsibleとはPythonベースで書かれた構成管理ツールです。

参考
Automation for everyonewww.ansible.com

ですが、Chefで言うレシピはAnsibleではPLAYBOOKと呼ばれ、YAMLという記載法で書きますので改めてPythonを覚える必要はありません。
Ansibleのメリットとしては、SSH接続出来ればクライアントをインストールする必要が無いに尽きると思います。

レガシーな構築PJほど、一時的にしろ無駄なクライアントツールをインストールする事を嫌がる傾向にありますから、これはAnsibleを使う大きなメリットなのかな、と。
と、前置きが長くなりましたが、Ansible始めて行きたいと思います。

今回のシステム構成

今回は検証なのでESX上に構築したいと思います。
環境:自宅のESX上の仮想マシン

OS: CentOS7
CPU: 1個
MEMORY: 1GB
HDD: 30GB

Ansibleインストール(最新版導入)

・必要となるモジュールインストール

# yum install -y epel-release
# yum install -y gcc python-devel sshpass
# easy_install pip
# pip install paramiko PyYAML Jinja2 httplib2 

・Ansibleインストール

# git clone git://github.com/ansible/ansible.git --recursive
# cd ./ansible && . ./hacking/env-setup

参考:Ansible公式インストールガイド

参考
Installation Guidedocs.ansible.com

・バージョン確認

# ansible --version 
ansible 2.0.0 (devel 718898891e) last updated 2015/05/17 07:30:31 (GMT +900) lib/ansible/modules/core: (detached HEAD 75790b6ebb) last updated 2015/05/17 07:30:48 (GMT +900) lib/ansible/modules/extras: (detached HEAD 88eff11c04) last updated 2015/05/17 07:30:58 (GMT +900) v2/ansible/modules/core: (detached HEAD 85c8a892c8) last updated 2015/05/17 07:31:14 (GMT +900) v2/ansible/modules/extras: (detached HEAD 70ea058563) last updated 2015/05/17 07:31:24 (GMT +900) configured module search path = None

動作確認

一度でもSSHで接続していないと下記のエラーが出力されるので、あらかじめSSHで接続しておくこと。

# ansible all -m ping --ask-pass
SSH password:
127.0.0.1 | FAILED => Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host.
# ansible all -m ping --ask-pass
SSH password:<パスワード応答>
localhost | success >> {
"changed": false,
"ping": "pong"
}

Ansibleインストール(yumで楽々導入♪ただし、最新版でない)

・Ansibleインストール

# yum install -y epel-release
# yum install -y ansible

・バージョン確認

# ansible --version
ansible 1.9.1
configured module search path = None

以降、最新版インストールの時と同様なので省略

ハマったところ

ansibleをインストールした直後はコマンド類を使えていたが、OS再起動なりログアウトなりしてしまうとコマンドが使えなくなってしまった。。。

# ansible --version
Traceback (most recent call last):
File "/root/ansible/bin/ansible", line 36, in <module>
from ansible.runner import Runner
ImportError: No module named ansible.runner

原因としては、環境変数を.bash_profileなりに書いていなかったことが原因。
例えば、~/.bash_profileを下記のように編集してやると、

~略~
PATH=$PATH:$HOME/bin:/root/ansible/bin:

export PATH

export PYTHONPATH=/root/ansible/lib:
export MANPATH=/root/ansible/docs/man:
~略~

インストールなんて大した事ない、と思っていたのですが上手く行かないものですね。
次回からAnsibleを使って色々と検証して行こうと思っています。

以上、あいしんくいっとでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)