ansibleしてみたので、やったことやハマったことをメモしてみる

f:id:isopan:20150305163536p:plain

ansibleとは、Pythonで書かれたプロビジョニングフレームワークです。

私の実行環境は、CentOS6.6でした。

 

ドキュメント

Ansible Documentation — Ansible Documentation

プロビジョニングって?

サーバに対してミドルウェアのインストールや設定等の環境構築を行うこと。

ansibleは、そのプロビジョニングを自動化してやってくれるフレームワーク

自動化することで冪等性が担保される( ^ω^)

冪等性

ある操作を1回行っても複数回行っても結果が同じであることをいう概念。

サーバーが複数台あると、冪等性を保つのが大変!

マニュアル通りにやっていても、「僕の開発環境では動きました!(`・ω・´)キリッ」「あれ?このツール入れたっけ?」「あれもこれもこの開発環境だけいれておこうww」

のようなカオス状態がなくなります。

 

鍵の作成とユーザーの作成

作成するユーザーはansibleとし、各サーバーのIPは以下のとおりとします。

ansibleサーバーIP:192.168.1.1

ansibleクライントIP:192.168.1.2

 

gista5c1bca7ae7ebd10688e

 

ハマったことその1

クライアント環境では、実行者にsudo権限が必要だった。

色々sudoしなくてはならないのに、sudoをパスワードなしで実行できる権限を付与しておくの忘れた。

ansibleを利用するユーザーには、必ず付与しておこう。

# visudo

ハマったことその2 

なぜかaction service コマンドが使えない

ntpdやらhttpdを起動したかったのに、action serviceが使えない。

No JSON object could be decoded

こんなエラーがでる。

 

クライアント側で

# yum install python-simplejson

してみるといいよってドキュメントに書いてあった。 

Installation — Ansible Documentation

 

けど、、、解決できなかったから。もう

/etc/init.d/xxxx start|restart|stop init.dを直接commandで実行しちゃったよ。

command: /etc/init.d/ntpd start

 

ハマったことその3

対話型を自動入力する

memcachedをインストールしたときに、なかなか進まないと思ったら、文字入力を促されている箇所で止まっていた。

 

expectを使う手もあるけど、簡単にやるなら

command: yes yes | pecl install memcached 

 

ってyesコマンドを使う手もある。

 

まださわりしかやっていないので、他にも色々ハマるところはでてきそうだけど、ansibleは覚えることが少なくて、個人的にはかなりオススメ。

 

また、完全に冪等性を保つためには、サーバーからの返り値を取ってごにょごにょするみたい。もう少し踏み込んでみよう!