no-image

【書評】Ansible Up and Running

オライリーのアニマルシリーズ。YAMLファイルにサーバーの構成を記述しておけば、コマンド一発でその通りにサーバーを構築してくれるAnsibleというツールの解説本です。

  • 本書の対象者は全くAnsibleを触った事ない人向けで、最初から丁寧に教えてくれる。ただし個人的には、Linuxサーバーをコマンドラインから手動で構築しているけど、それだとタルいのでなんとかオートメーション化したいっていう願望を持って読んだほうが頭に入ると思う。基本的なLinuxのコマンドの知識は必須っす
  • Ansibleって言葉はWorlds of Exile and Illusion: Three Complete Novels of the Hainish Series in One Volume–Rocannon’s World; Planet of Exile; City of Illusionsの小説に出てくる、”a fictional communication device that can transfer information faster than the speed of light”(情報を光よりも早く伝達する空想上のコミュニケーション機器)から来ているらしく、以後、他のSFにも登場するようになったらしい
  • YAMLの記述方法わからないよって方も安心。3ページほどにわたって解説してくれている。逆に言うとYAMLは本当に簡単に記述出来るのでこれくらいの解説で十分なのかもしれない
  • シングルサーバー構成で、基本的なWEBサーバーだけだったらCHAPTER 2のPlaybooks:A Beginningの解説だけでも十分かもしれない。事実自分のAnsibleの知識のほとんどがこの章でまかなわれています
  • よくnginxとかApacheの設定とかを変えた後サービスをリスタートしますが、その時にAnsibleで役に立つのがhandlersというモジュールです。しかしこれについて面白い記述があったのでご紹介。”it’s a pretty small optimization,since we can always just unconditionally restart the service at the end of the playbook insted of notifying it on change,and restarting a service doesn’t usually take very long.”(handlersは取るに足らない最適化である。なぜならばいつでも無条件にplaybookの最後でサービスを再起動できるし、サービスの再起動そのものはそんなに時間がかからない)として、handlersを使うんだったら、変更の有無にかかわらず、各々のサービスをplaybookの最後で再起動したほうが良いんじゃないかという意見には納得
  • 実例としてMezzanineっていうPython製のCMSをサーバーにインストールする手順を紹介しています。ただ自分はPHPerなのであんまし面白く無かったです…
  • Chapter 4のVariables and Factsも結構面白い。Ansibleの変数は基本的にどこに書かれていても参照できたりするんですが、変数名が競合した場合の優先順位とか解説してくれたので参考になりました
  • Chapter 8でまる一章割いてRolesについて解説。playbookの規模が大きくなってくると、役割ごとにRoleを分けて記述したほうが見通しが良くなるので、この章も是非とも参考にして欲しいです
  • Playbookをゴリゴリ書いている時はプログラミングと同じでデバッグしながらいきたいんですが、それについても一章割いて解説。変数のダンプ、ドライラン、ステップバイステップで実行、特定のタスクだけの実行など、デバッグに必要な技術を全て解説してくれています
  • 個人的に一番役立ったのはAPPENDIX AのSSHの章かもしれない(Ansibleの本なのにw)。特に自分はAgent Forwardっていう技術を知らなかったので、例えばVPSサーバーにGitHubからコードをクローンする際、VPS上にプライベートキーを置くと色々と宜しくないので、ローカル(開発機)のキーでなんとか認証出来ないかっていうときに使うんですが、それの解説とか詳しくて助かりました

構成管理ツールを全く使ったことのない自分が、自サイトのサーバー構築にまでたどり着くことが出来たので、この本を読めば一通りAnsibleを使いこなせるはずです。

いきなり公式ドキュメントを読みながら始めてもいいんですが、公式ドキュメントは個々のモジュールの解説は優れているものの、初心者が段階を踏んで学んでいくという意味ではどうしてもハードルが高いんですよね。自分がプログラミングを学ぶときに、WEBよりも書籍の方が好きな理由の一つでもあるんですが、やっぱり「段階を踏んで」「体系的に」学ぶことが出来るのは書籍の利点だと思います。

全体的に平易な解説で、英語自体もさほど難しくなく大学卒業程度の力があれば余裕で読めると思います。初めてのAnsibleっていう訳書も出ているのですが、Ansibleの公式ドキュメントはもちろん英語ですし、実践に備えて英語力も鍛えておくためにも原本にあたることをオススメします