
サーバ大量構築時のキモ ~Chef 構成の仕組み・用語について~
前回はChefがどういったもの…
サーバを大量構築するにあたり『Chef』というものが役に立つと聞いたので、実際に試していく事にした。
そもそも、『Chef』とはどういうものなのだろうか?
まずは解説しているページを探してみた。
Chef入門 (全14回) – プログラミングならドットインストール
そして現在『Chef』に関する書籍として唯一存在している入門Chef Solo – Infrastructure as Codeを参照してみた。
その結果、分かった事は以下。
『Chef』で出来る事、それは一言で言うならば『操作の自動化』であろう。
例えば、複数のマシンを対象に以下のような作業を行わないといけないとする。
このような作業を、1台1台にsshで接続して作業をしなくてもいいのが『Chef』の特徴だ。Chefサーバに命令を投げる事で、ぶら下がっているChefクライアントに対し変更を適用させる事が出来る。
このぶら下がっているChefクライアントの事を『Node』、Chefサーバが入っているサーバを『Server』、Serverに対してコマンド実行させているマシンを『Workstation』と呼ぶようだ。
この辺りの用語については、このページが詳しい。
また、以下のような使い方もある。
サーバの構築時において、Chefサーバを立ち上げる事が出来ない事情(作業用端末機がボロで仮想マシンを立ち上げる事も出来ない場合や、スイッチが無いため作業用端末機と各マシンを直結して作業するしか無い場合など)がある場合、スタンドアローンなマシンに対し直接変更を加えさせる事が出来る。
こちらはChef Soloと呼ばれている。
すでに上で書いているが、Chefを利用するには以下の2つの方法がある。
それぞれに違いはあるが、共通しているのはクライアント機(構築・設定する対象となるサーバ)にはChefクライアントもしくはChef Soloというソフトウェアを入れる必要がある点だ。
そのため、構築する際に利用する場合はこれらのインストールしてもいいのか、詳細設計の段階で確認する必要があるだろう。
Chefサーバを用いた構成は、数十台〜数百台といったサーバを使う、大規模な構築・運用を行う際に向いている(別に数台でも利用可能だけど)。数台〜十数台程度であればChef Soloの方が向いているだろう。
この辺りについては、こちらの『Chefを構成する各要素~Client/Server、Solo』の方がわかりやすいかもしれない。
さて、Chefがどういう事を行え、その構成にはどういったものがあるのかはわかった。
では、『Chef』を用いてそれをどのように実現すれば良いのか。
『Chef』は、「その操作についてコードを記述」してChefクライアントに実行させる事で、その操作を自動化させているようだ。
この「その操作についてコードを記述」したファイルを、『Chef』では『レシピ』と呼ばれている。
この『レシピ』のコードはRubyで記述されている。といっても、Rubyで処理をゴリゴリ書いていく訳ではなく、LinuxなどのConfigファイルのような記述のされ方をしている。
少なくとも、簡単なシェルスクリプトを作った経験があれば、あとは分からないとこはググれば対処できるだろう。
そしてこのレシピの適用にも特徴がある。
Chefでは、レシピに「〜をインストールしろ」と書かれていても、既にインストールされている場合はその処理を行わないように記述できる。
べき等性というらしい。こちらについてもこのページに記述されている。
一時期は検索してもあまり情報がなかったけど、最近はかなり色々な情報を手に入れられるようになった。
次回から実際に触っていく事にしよう。
Pingback: Chefの勉強 – サイトのタイトル