1.はじめに

こんにちは!
先月ドワンゴは歌舞伎座に引っ越しましたが、
"銀座"に着てく服がなくて毎日困ってる氏家と申します。

インフラエンジニアとしては新参者になるのですが、よろしくお願いいたします。
bcf0f3659b10cbf40a02c889850fceb3fe5aec33

ドワンゴの中ではniconico系の事業を担当しているのですが、
2006年にニコニコ動画がスタートしてもう少しで7年になろうとしています。
昔からあるシステムはサーバー構築手順も確立されてるのですが、
新しめのプロジェクトではChefを導入してサーバー構築をしようとしています。

先日の参院選で、ニコ動アンケートが97.52%の的中率というニュースをご覧になられた
方もいるかと思いますが、あのアンケートシステムもChef Soloを使って構築しました。
大規模なシステムはChef Serverで構築してるところもあるのですが、
今回私が解説するのは、比較的小規模な構築に向いているChef Soloの話になります。


2.とあるエンジニアのお話

「Chefってサーバー構築を自動化できるんだー、やってみようかなー」
なんとなく興味をもって、とりあえずWebで軽く調べてみると、
「Chef ServerとSoloがあって、Serverはサーバーソフトウェアをインストールするんだ」
「Serverはめんどくさそうだな。Chef Soloでやってみようか。よしググってみよう」
そうしてググってみると…

・Chef Serverの話でした
 ※『Chefです「よし通れ」『残念、Chef Serverちゃんでした
・Chef Soloで作りますよ
 ※「うん、これこれ」
・Knife Soloを使うと便利だよー
 ※「えっ、Chef Soloよりこっちがいいの?」
・よく見ると2011年ころの記事だった
 ※「えー、この情報は古いの??」
・人によって書き方に違いがある…
 ※「昔新聞で7つの間違い探しやったなー(遠い目」
・くぁwせdrftgyふじこlp

※Webから情報を集めるのは大変ですが、今だと伊藤直也さんの書かれた「入門Chef Solo」がわかりやすくまとめられてるかと思うので、一読されるとよいかと思います。

3.結局どれを選べばいいの?

●Chef? bashスクリプト? 手作業?
え、Chefの話をしてるのにそこから?って感じですが、
やはり手作業での構築と比べたら、ミスが少なく速度も100倍くらい速いです。

手順をbashスクリプト化してる場合との比較だと、
・"レシピ"という共通な言語による可読性の高さ
・"レシピ"を何回実行してもエラーにならず、実行後のサーバーは同じ状態になる
というところが利点です。

●Chef Server? Chef Solo?
下記の理由に当てはまるならChef Soloがよいかと思います。
・開発者
・Vagrantと組み合わせる
・導入するサーバーが数台程度
・Chef Serverをインストールしておけるサーバーが無い

●Chef Solo? Knife Solo?
Chef Soloだと、cookbookファイルを置いたサーバーに対してセットアップが実行されます。

ただそれだと、別のサーバーにセットアップをしたい場合、
 cookbookファイル一式を手動で転送 → 別サーバーにログインしてChef Soloを実行
する必要があります。

上記作業を自動でやってくれるのがKnife Soloで、Chef Soloを便利に使えるようにするツールです。

4.次回予告

少し長くなりそうなので、詳しくは次回に、とりあえず数台程度お手軽にサーバー構築自動化を始めたい、という目的で、"Chef Solo 11.6.0" with "Knife Solo 0.3.0" での構築のテクニックを説明いたします。

・Chef Soloをゼロからインストールして実行するまでの省略無しの手順
・複数のプロジェクトを管理していくための提案
・Chef Soloで環境(開発・本番)、用途(Web・Manage)を使い分けるコツ
・外部疎通ができない環境での実行でのレシピの書き方

などを予定しています。ご期待ください!

そしてドワンゴでは、現在エンジニアを積極的に採用中です。 特に、このような環境構築自動化のノウハウを持ったインフラエンジニアは大歓迎です。 ご興味がある方は是非コチラからご応募ください!ニコニコ入社一時金制度もやっています。