こんにちは。
株式会社ロックオンの三原です。

私の業務の一つに、サーバ構築業務があるのですが、今回、構築の一部に「Chef」を試行導入したので、記事にまとめさせて頂きます。

そもそも「Chef」とは、アメリカの会社Chef(旧OpsCode)が中心となり開発しているサーバ構築自動化ツールです。
Chefは、大規模のサーバ群を運用しているWEB系企業でも多く導入事例があり、AWSで2013年に発表されたOpsWorksにも利用されていることから、サーバ構築用ツールとしては、定番のツールとなっています。

さて、現在弊社では、手順書に従い、手動でサーバ構築を行い、人力で設定を確認するというアナログな方法を採用しているので、本来であれば、Chefを導入からインフラのCI環境構築まで、一気に取り入れたいところなのですが、今回は導入の初歩ということで、構築手順が確立しているサーバの手順書をレシピ(Chefのコード)化しました。

”自動化”といいますが、そもそもサーバ構築にはどれだけ作業が必要なのでしょうか?

弊社の場合、サーバをラッキングしてからアプリケーションを置けるようになるまで、一台のサーバに対して、ざっと以下の様な作業が必要になります。

* H/Wの設定
* BIOSの設定
* RAIDの設定
* メンテナンス回線の設定
* ハイパーバイザのインストール
* ハイパーバイザの設定
* VMスペック設定
* VMネットワーク設定
* OSインストール
* HWファームウェアの設定
* ソフトウェアパッケージの最新化
* ユーザ作成
* ランレベルの変更
* 不要サービスの停止
* WEBサーバのインストール・設定
* アプリケーションミドルウェア(PHP,Tomcat等)のインストール・設定
* DBのインストール・DB設定
* SSHのログイン権限設定
* SSH鍵の設定
* NICの設定
* 各種ログのローテーション・圧縮の設定
* ログの収集先設定
* NTP設定
* Nameserverの設定
* 死活監視設定
* 性能監視設定
* SMTP設定
* バックアップ設定

では、Chefでどの部分が自動化できるかというと、実はOSインストール以降の全ての作業を自動化することが出来るのです。

とは言え、Chefは得意な場所と苦手な場所があります。

最近では、上記の図の様にサーバ構築作業を、BootstrappingConfigurationOrchestrationという3つのレイヤーで分けて呼ばれることが多くなっています。

先ほどの作業項目を大まかに分類すると以下の様になります。

—————
<Bootstrapping>
* H/Wの設定
* BIOSの設定
* RAIDの設定
* メンテナンス回線の設定
* ハイパーバイザのインストール
* ハイパーバイザの設定
* VMスペック設定
* VMネットワーク設定
* OSインストール
—————
<Configuration>
* HWファームウェアの設定
* ソフトウェアパッケージの最新化
* ユーザ作成
* ランレベルの変更
* 不要サービスの停止
* SSHのログイン権限設定
* SSH鍵の設定
* WEBサーバのインストール・設定
* アプリケーションミドルウェア(PHP,Tomcat等)のインストール・設定
* DBのインストール・DB設定
* 各種ログのローテーション・圧縮の設定
—————
<Configuration と Orchestrationの中間>
* ログの収集先設定
* NICの設定
* Nameserverの設定
* NTP設定
—————
<Orchestration>
* 死活監視設定
* 性能監視設定
* SMTP設定
* バックアップ設定
————-

この中で、Chefは、サーバ単体で機能が完結するConfigurationが得意です。

一方、Orchestrationは複数サーバの整合性が必要なため、運用を考えた工夫が必要になります。(Orchestrationは別のツールに任せるべきだという声もあります。)

今回は、”サーバの種別”×”ネットワークのエリア”という出来るだけ単純な組み合わせで作業を分類し、手順書をレシピ化しました。

例えば、”THREeの広告情報DB” × “本番環境のバックエンドネットワーク”や、”THREeのバッチサーバ” × “開発環境”といった形です。
これにより、ネットワークのエリアによって決まっている協調作業の相手側サーバ(SMTPの中継サーバやNameserverなど)をChefのレシピに落とし込んでいます。
この辺りの詳細な内容については、次回の記事でご紹介したいと思います。

ただし、本当に運用を考えた場合、”同じ種別でも一部だけ最新バージョンのミドルウェアを使いたい場合”や、”協調作業の相手側サーバに設定が必要な場合”など、多くの課題があります。

まだまだChefについては、初歩のノウハウしかないので、このあたりの経験やノウハウ、また、サーバ構築に関して同じような悩みを持っている方は、是非、勉強会とまでいかなくても、情報交換をさせて下さい。
株式会社ロックオンの秘密開発基地「ロックオフ」と冷たい飲み物を用意しているので、ご連絡お待ちしています。