Nedia What's up!

ネディアのエンジニアによるIT技術やサービスの紹介・検証などをお届け!

第1回 サーバー設定ツール「Chef」 (1/3)

近年注目されているサーバー設定ツール「Chef(シェフ)」は、ファイルに記述した設定内容に応じて自動的にユーザーの作成やパッケージのインストール、設定ファイルの編集などを行うツールです。

今回はこのChefについて、概要及び環境の構築方法と使い方について全3回にわたり紹介します。

—————————————————
第1回:Chefの概要
・Chefとは?
・Chefの特徴
・Chefのメリット
・Chefによるサーバー管理構成
—————————————————

—————————————————
第2回:フレームワーク「Chef」の基本
・用語解説
・Chefのインストール
・Chefの使い方
—————————————————

—————————————————
第3回:まとめ
・クックブックの紹介
・まとめ
—————————————————

尚、この記事は以下のような人を対象としています。

・Chefってどういうものなの?
・Chefって色々な用語があって難しそうだけど、どうすれば簡単に始められるの?

本記事でサーバーはCentOS6.5を使用し、Chefの構成はサーバ一台で完結出来るChef-Soloをメインとした内容となっていますが、Chefは他のLinuxディストリビューションだけでなくWindowsにも対応しています。

Chefとは

Chef(シェフ) とは Ruby 製のシステム構成管理ツールでインフラの構築を自動化できます。

サーバ構築を行ったことがあればほとんどの方が経験していると思われる「手順書」の作成。
手順書から各コマンドをコピペし、
初期設定をして
ユーザ作成をして
DBを入れて
Webサーバを入れて
後から他のパッケージが必要になったから手順書を変更して、、
これではいずれミスが発生してしまいます。

Chef はこうしたインフラ構築をすべてコードで管理することでシステム構成の把握を容易にし、ミスが出やすい手動オペレーションを減らします。

一度コードを作成してしまえばサーバの台数によらず全部自動化できるためこれにより大幅にインフラエンジニアのリソースを削減できるようになります。

尚、Rubyはプログラミング言語ですが、Rubyの文法を1から学ぶ必要はありません。

上記のような比較的分かりやすいコードで作成していくため、プログラマーでなくともなんとかなります。(実際、私もプログラマーではありません)

Chefの特徴

レシピと呼ばれる設定ファイルにコードを記述してシステムの「状態」を管理するのが特長です。

インフラ構築のための「手順」を管理するのではなく、システムの「状態」を管理するという部分がミソとなります。

レシピについての詳細は後述しますが、Chefのレシピにおいて重要な考え方として、「冪(べき)等性を保障する」というポリシーがあります。
これは、同じサーバに何度も Chef 実行を繰り返しても、同じ結果が得られることが保証されるという性質です。

Chefのメリット

Chefによりインフラ構成をコードで記述し,自動化するメリットには次のようなものがあります。

自動化によるコスト削減
 環境構築の自動化により、構築コストの削減ができます。

・複数台へ一括適用
これまでは、サーバの台数分だけ作業を繰り返す必要がありましたが、Chefを使えばサーバの台数が増えても、作成したコードを適用するだけで済むためインフラ構築にかかる時間を削減できます。

・作業ミスが発生しない
手順書を元に手動で作業する方法では、手順を抜かすなど作業ミスが起こる可能性がありましたが、Chefを活用すれば、手順を間違える心配はありません。

Chefによるサーバー管理構成

Chefには、Chefサーバーによるサーバークライアント構成と、Chef-Soloによる単体構成の二通りの使い方があります。

Chefサーバーは大規模なサーバー群を一括管理する時に便利です。その代わり、導入が少し面倒です。

ChefServer

Chef-Soloは導入が簡単なため、小数のサーバーをChefで管理する時に便利です。その代わり、各サーバー内にログインして毎回Chef soloを実行する必要があります。

ChefSolo

今回の記事は入門向けとなりますので、Chef-Solo について紹介しますが、Chef-Soloで使うクックブックやレシピはChefサーバーでも共通して使えます。

次回は、クックブックとレシピの役割を中心に、Chef のインストールから使い方までをご紹介します。