
「勉強会に行ってみた!」
第28回「速習!Ansibleで Infrastructure as Code」
今回は、サーバー構成ツール Ansible の入門編です。実際に各自 が動かすところまでやるハンズオン形式とのこと。やっぱり自分の手でやるとわかりやすいですよね。
(三土たつお)
会場は目黒にあるドリコムのセミナールームでした。ドリコムが入っているビルは雅叙園の隣にあるんですけど、中で直結しています。
セミナールームはこんなです。ドリコムでは、ここを勉強会の会場として外部にも提供しているらしく、月に2?3本の勉強会が開かれているそうです。とてもいいことですよね。
今回の講師の倉持さんです。Ansible歴は約一年とのことですが、それでもかなり詳しくなれた。それぐらい実は Ansible はシンプルで使いやすいんですよ、とのことでした。
倉持さんが事前にとったアンケートによると、会場の参加者の大半は、Ansible について「名前は聞いていて、なんとなくどんなものか知っている」というレベルのようです。
まずは、そもそも Ansible とは何かについて。一言でいうと、「システム構築・運用で、人が楽をできる、簡単な自動化エンジン」とのことでした。
そういうツールは、サーバーの立ち上げから設定、それらの構成といった各段階で Docker や chef、capistrano などいろいろなものがありますが、Ansible はそれらをある意味で包括しているんだそうです。なんだかすごいですね!
■Ansible の特徴
Ansible の特徴の一つは「シンプル」だということ。たとえば、chef の有名な本は400ページくらいありますが、Ansibleの本はせいぜい100ページちょい。
学習コストが低くて、すぐに達人になれる!とのことでした。
次の特徴は、「エージェントレス」。一般的にこういう構成系ツールは、構成する側と、構成される側にそれぞれツールがインストールされます。構成される側のものはエージェントとよばれ、それが管理側の指令を受け取って動作します。
でも、Ansibleでは構成する側だけにツールを入れればよくて、構成される側にエージェントをインストールする必要がありません。すべての指令を SSH 経由で管理される側に送って実行するのです。やっぱりシンプル!
■使い方
Ansible で主に必要になるのは二つのファイルだそうです。一つはインベントリー。「何を」構成するのかを記述したもので、ホスト名やグループ名などを書きます。
もう1つはプレイブック。構成する対象を「どんな状態に」するのかを記述したものです。ここのニュアンスが大切で、たとえば「ウェブサーバーをインストールする」という動作を書くのではなくて、「ウェブサーバーがインストールされた状態にする」という風に記述します。
こう書くことによって、プレイブックの初回実行時にはインストールし、すでにインストール済みの場合には何もしないということが保証されるわけです。何度プレイブックを実行しても、結果としての状態が変わらないようにする。冪等性というやつですね。
構成を実行する際は、ansible-playbook コマンドで、インベントリーとプレイブックを指定します。すると、構成される側にSSH経由で yum install httpd などのコマンドが走るということになります。
■さっそく使ってみる
ではいよいよ使ってみましょう。
今回のハンズオンのゴールは、構成する対象のホストでワードプレスが立ち上がった状態にすることです。
講師の倉持さんは、今回そのための手引書をちゃんと製本して準備していました。そこそこ費用がかかるはずですが、参加費用はタダです。太っ腹!
Ansible を走らせるマシンは、倉持さんが今回のために借りたIaaS環境のうえに、参加者の数だけ用意した Docker のコンテナです。これもそこそこ実費がかかっているはずですし、環境を準備するのにすごい手間がかかっているはずです。すごいなーと思いました。
ハンズオンに取り組む参加者のみなさん
みんなが手引書にしたがって黙々と進めている間、倉持さんがいくつかのハマリどころを紹介していました。
プレイブックはYAML形式で書きます。YAMLではタブは使えず空白を使う必要があるのですが、それを知らずに使っちゃうとまずいことになります。「タブはタブー」なんだそうです。
みんなが書いているプレイブックをちょっと覗いてみましょう。
こんな感じです。ワードプレスに必要な PHP や MySQL、ワードプレスそのものをインストールするっぽい手順が書かれていますね。
うまく行けば、こんなふうにワードプレスが起動するところが確認できます。会場の参加者のみなさんもだいたい20分くらいで続々と最後までたどり着いていました。
分からない場所があれば、会場にいるお助けスタッフに聞くこともできます。ハンズオンだとこういうの結構多いんですが、ありがたいというか、至れり尽くせりですよね。
倉持さんはふだん、社内でもこういった勉強会の講師をする機会が多いそうなのですが、単独でプロデュースしての開催は初めてだったので、独自に考えて作ったプランの腕試しの意味もあったとのことでした。
■まとめ
プレイブックを見ていてもいろいろと素直にかけそうだし、評判どおりシンプルでよさそうだなと思いました。複雑なことをやりたいときはモジュールを探したり自作したりもできる。まずは試してみたいですね。
今回行った勉強会:「速習!Ansibleで Infrastructure as Code」
http://connpass.com/event/31300/
1976年生まれ。プログラマー、ライター。プログラマーとしてはふだんPHPを書いています。ライターとしてはニフティのデイリーポータルZとかで書いています。
著書に「街角図鑑」(実業之日本社)など。
http://mitsuchi.net/