Chefを使ってサーバー構築運用! PR TIMES導入編!
こんにちは。PR TIMESエンジニアの落合です。
主にWEBアプリケーション開発を担当しているのですが、
最近は開発環境構築や、インフラ周りも担当しています。
前回は開発環境自動化というネタで話させてもらいましたが、
今回は、Chefで開発環境を開発したお話をさせてもらいます。
vagrantを使用する事によって、簡単に環境を共有する事は出来ますが、
Peclなどのライブラリを開発していく上で追加した場合、
毎回指示書(手順書)などを作成して情報の共有を図る必要がありました。
そこで、Chefの登場です!
Chefとは?
Chef社が開発している「インフラフレームワーク」とか「構成管理ツール」と言われるツールです。
通常サーバーを構築する場合、OSのセットアップからネットワーク設定や、ミドルウエアのインストール、各種設定やチューニングを行います。
またその際、設定手順書も同時に作成していき、複数台構築を行う事になると思います。
ChefはRubyで書かれた設定書(プログラム)に応じて、自動的に設定編集を行ってくれるツールです。
類似しているツールとして、「Puppet」があり、Chefと人気を二分しています。
簡単に一例を書いてみたいと思います。
package "httpd" do action :install end service "httpd" do supports :status => true, :restart => true action [ :enable, :restart ] end
Chefのファイル構成について
まずRubyの文法で書かれたサーバーの設定ファイルは「Recipe(レシピ)」と呼びます。
レシピを取りまとめているのを「Cookbook(クックブック)」と呼びます。
クックブックには、設定ファイルを管理するための、「Template(テンプレート)」や、
環境情報を取得して値を変更する事が出来る変数を定義する「Attribute(アトリビュート)」なども含まれています。
クックブック群やChefの実行なファイル群の事を「Repository(リポジトリ)」と呼ばれます。
Chefによるサーバー管理構成について
Chefの構成には、大きく分けて2種類の構成があります。
1台のサーバーでCookbookの作成や管理を行い、実行までを完結する方法のスタンドアロン構成と
Cookbookをサーバーで集中管理して、クライアントはサーバーからCookbookをダウンロード実行する
クライアント/サーバー構成です。
通常、クライアント/サーバー構成の場合には、Chefサーバーを構築し、
「Node」と呼ばれているクライアントにはChefクライアントをインストールする必要がある。
また、サーバーでレシピの作成も出来るが、別のマシンで行う事も可能。
また、その場合のマシンを「Workstation(ワークステーション)」と呼びます。
「knife-solo」というプラグインを使えば、Chefサーバー無しで、複数台を管理する事も出来る。
knife-soloというツール
先ほども記述したとおり、スタンドアロン構成であれば、Chefサーバーが不要ですが、
設定対象のそれぞれのサーバーにChefクライアントとクックブックを配置して管理しなければなりません。
この作業を自動化するツールがknife-soloというツールです。
knife-soloは、作業マシンで作成したCookbookなどの設定ファイルを、
対象マシンにコピーし、その後、chef-soloコマンドを実行する、という一連の作業を自動実行してくれるツールです。
設定ファイルのコピーにはrsyncが、chef-soloコマンドの実行にはsshが利用されます。
Windowsで実現するには、コマンドプロンプトには両方とも初期状態では入っていませんが、
Cygwinなどを使えば、簡単に実現する事が出来ると思います。
Windows7にCygwinでChefをインストール
windowsの場合、chefはバイナリが用意されていますが、
今回は、CygwinでRubyのgemを用いてインストールしたいと思います。
ちなみにgemのバージョンは以下の通り。
$ gem -v 2.2.2
それでは早速gemを使ってChefのインストールから行います。
$ gem install chef --no-ri --no-rdoc DL is deprecated, please use Fiddle Fetching: mixlib-config-2.1.0.gem (100%) Successfully installed mixlib-config-2.1.0 Fetching: mixlib-cli-1.5.0.gem (100%) Successfully installed mixlib-cli-1.5.0 ・・・中略 Fetching: chef-11.12.4.gem (100%) Successfully installed chef-11.12.4 25 gems installed $ chef-solo --version DL is deprecated, please use Fiddle Chef: 11.12.4
現在の最新版chef-11.12.4がインストールされました。
次に、knife-soloもインストールしたいと思います。
こちらもgemを使ってインストールします。
$ gem install knife-solo --no-ri --no-rdoc DL is deprecated, please use Fiddle Fetching: knife-solo-0.4.1.gem (100%) Thanks for installing knife-solo! If you run into any issues please let us know at: https://github.com/matschaffer/knife-solo/issues If you are upgrading knife-solo please uninstall any old versions by running `gem clean knife-solo` to avoid any errors. See http://bit.ly/CHEF-3255 for more information on the knife bug that causes this. Successfully installed knife-solo-0.4.1 1 gem installed $ gem list | grep knife-solo DL is deprecated, please use Fiddle knife-solo (0.4.1)
以上で、Chefのインストールは完了となります。