使いやすい Ansible 、みんな使おう Ansible (1) #
2〜3ヶ月ダラダラと Ansible を触ってきて、それなりに使えるようになってきたので、ちょっとまとめておく
お試しでちょっと触ってみるのがすごく楽な Ansible #
世の中 Chef が流行っているようで、素直に Chef を使えばいいんだけれども、なんで Chef じゃなくて Ansible なのかというと、
- サーバ側 (本番環境) に Ansible のために何かを導入する必要がない
- 普通の使い方なら YAML 書くだけ。モジュール追加はどんな言語で書いてもよい
- ちょい使いなら、YAML すら書く必要なし
っていう 2 点に魅かれたから。自分が使うだけならともかく、覚えることが少ないってのは、色んな人に触ってもらうためには重要ですね
- ちょい使いなら、YAML すら書く必要なし
Chef の場合、Chef Solo ならサーバ側には何もいらないかもしれないけど、Ruby でホゲホゲすることは避けがたく、普段 Ruby 触ってないものにとっては「お試し」で使ってみようという時に面倒に感じるんですよね
でも「Chef」「CookBook」「knife」というネーミングセンスは気に入ってて、シャレオツさ加減では Chef に軍配が上がるかなぁ、と、ちょっと残念に感じたり
だけどだけど「あんしぼー」という語感は嫌いじゃない
さっそくちょっと触ってみる #
- インストール
- ステキ先人さん達が色々書き残してくれてるので、よしなに。ワシは、Mac OS X は brew で、CentOS は yum で epel から導入
- サーバリストを作る
- ターゲットとなるサーバが書かれたファイルを作成。一行に一つ IP address が書かれているテキストファイルでよいです
192.168.0.1
192.168.0.2
複数の IP address をグループ化しておくこともできます[localservers]
192.168.0.1
192.168.0.2
[localservers2]
192.168.10.1
- ターゲットになるサーバは、管理者権限 (root) でログインできるか、sudo で色々できるか、いずれかである必要があります
- /etc/hosts のように IP address
hostname と書くとエラー。これができると楽だったんですけどね
- ターゲットとなるサーバが書かれたファイルを作成。一行に一つ IP address が書かれているテキストファイルでよいです
- ターゲットとなるサーバの Python のバージョンを確認する
- サーバ側に何も導入しなくてよいと述べましたが、Python だけは必要になります。CentOS の場合、YUM が python script なんで、Python 自体は入ってますね。CentOS 6 なら、Python 2.6 以上が入ってるので、何もする必要なし。CentOS 5 の場合、標準だとPython 2.4 なので、別途 simplejson を導入する必要があります。入ってない場合は、それも Ansible で入れてしまいましょう
$ ansible all -m raw -a "yum -y install python-simplejson" -i ansible_host.txt -K
- サーバ一覧に書かれた全サーバにログインして、
$ sudo yum -y install python-simplejson
を実行します- 「-i ansible_host.txt」は先程作った、サーバ一覧が書かれたテキストファイルです
- 「all」を指定すると、ansible_host.txt に書かれたすべてが対象になります。個別に指定することも可能
- -K を指定することで、sudo するためのパスワードの入力がうながされます
-u root -k とすると、ユーザ root でログインするためのパスワードの入力がうながされます
環境に合わせてどうぞ
- サーバ一覧に書かれた全サーバにログインして、
- サーバ側に何も導入しなくてよいと述べましたが、Python だけは必要になります。CentOS の場合、YUM が python script なんで、Python 自体は入ってますね。CentOS 6 なら、Python 2.6 以上が入ってるので、何もする必要なし。CentOS 5 の場合、標準だとPython 2.4 なので、別途 simplejson を導入する必要があります。入ってない場合は、それも Ansible で入れてしまいましょう
つうわけで、とりあえず Ansible が動くところまで
全サーバで
$sudo yum -y update
するためのシェルスクリプトを書いてる人はたくさんいると思いますが、そういうことのためだけに導入してもいいんじゃないかと感じるお手軽さですね
次回は「YAML 書くだけ! 快適あんしぼー」
次々回は「ロールで整理! 超快適あんしぼー」
とか続く。。。かもしれません