この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
最近は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を使って色々と検証して行こうと思っています。
以上、あいしんくいっとでした。