ansibleしてみたので、やったことやハマったことをメモしてみる
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
ハマったことその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は覚えることが少なくて、個人的にはかなりオススメ。
また、完全に冪等性を保つためには、サーバーからの返り値を取ってごにょごにょするみたい。もう少し踏み込んでみよう!