Chefを使えばサーバーなどの環境構築を自動化でき、作業負荷が減る上にミスもなくせる。このメリットを最大限に生かすノウハウを二つ紹介する。
ポイント1
環境構築には必ずChefを使う
「状況によって手作業で環境構築することを認めると、Chefの利用が浸透しない」。GMOインターネットの藤村 新氏(次世代システム研究室 シニアアーキテクト)は、自身のチームでの経験から、こう警鐘を鳴らす。
藤村氏らのチームでは、Chefで自動構築したサーバー環境に、管理者がリモートログインして手動で設定変更することがあったという。こんな手作業を認めると、設定手順である「レシピ」が残らない。そのため、あとで同じ環境を構築するたびに手作業が発生し、ミスが起こりやすい。そこで藤村氏らのチームでは例外を認めず、たとえ些細な設定変更であっても必ずChefで変更するルールにしている。
ポイント2
ロールでレシピを再利用
Chefのレシピは、システムのサーバー種別ごとに作成することが多い。例えば「XシステムのAPサーバー」「XシステムのDBサーバー」「YシステムのAPサーバー」「YシステムのDBサーバー」という具合である。
しかしこうしたサーバー種別の間では、OSやミドルウエアの設定が共通するケースが少なくない。その場合、レシピは部分的に共通しており、その内容に変更があったとき、該当するレシピをすべて修正する必要がある。
ヤフーの内田誠悟氏らのチームは、Chefの「ロール」と呼ぶ機能を使ってこの問題を解決した(図1)。ロールの定義ファイルは、複数のレシピを引用でき、それらを集約したレシピになる。そこで、アプリケーションやミドルウエア、OSごとにレシピを作り、それをロールで集約することで、レシピの再利用性を高めた。