Chefのインストールと設定
それでは、さっそくChefのインストールと設定を行います。
Chefのインストール
今回は、開発環境の構築を行うので、Chef ClientをローカルPCにインストールします。
インストールモジュールは以下のサイトからダウンロードできます。
ダウンロードサイトから、OSとChefのバージョンを選択します。執筆時点での最新版は、12.0.3-1です。ダウンロードしたmsiファイルを実行して、Chef Clientをインストールしてください。
インストールが完了したら、環境変数を反映させるため一旦パソコンを再起動します。パソコンが起動したらChefを使ってインフラを構築するためのもとになるフォルダを作成します。筆者の環境では、Eドライブに「chef-sample」というフォルダを作成し、その中で作業を行っています。Chefはコマンドプロンプトを使って実行します。次のようにバージョンを確認するコマンドを実行し、12.0.0が表示されれば、インストールは完了です。Chef Clientをインストールすると、Ruby 2.0.0もインストールされます。
E:¥> mkdir chef-sample E:¥> cd chef-sample E:¥chef-sample>chef-solo --version Chef: 12.0.3
つぎに、Chefを操作するためknifeコマンドの初期設定を行います。Chef ServerのURLやユーザ名や秘密鍵のパスなどを聞かれますが、すべてデフォルトのままで[Enter]キーを押下してください。
E:¥chef-sample>knife configure Please enter the chef server URL: [https://xxxxxxxxx:443] Please enter an existing username or clientname for the API: [xxxxxx] Please enter the validation clientname: [chef-validator] Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem] Please enter the path to a chef repository (or leave blank): ***** ~中略~
これで、Knifeコマンドを使うための設定が完了しました。設定内容は、/(ホームディレクトリ)/.chef/knife.rbに書き込まれます。この初期設定は、インストール後1度だけ設定すれば、Knifeコマンドが使えるようになります。
WebサーバをインストールするCookBookの作成
Chefのインストールが出来たので、次はインフラを構築するためのCookBookを作成していきます。
CookBookのひな形作成
Webサーバを構築するためのCookBookを作っていきます。CookBookを作るときは、「knife cookbook create」コマンドを使います。これはChefで使うファイルやフォルダのひな型を自動生成するコマンドです。コマンド書式は以下の通りです。
knife cookbook create [CookBookの名前] [オプション]
たとえば、httpserverというフォルダの配下にapacheという名前のCookBookを指定するには次のコマンドを実行します。
E:¥chef-sample>knife cookbook create apache -o httpserver
Ruby on RailsでWebアプリケーションを開発したことのある方であれば、「Scaffold機能」でひな形を作成しているようなものだと理解していただけると良いかと思います。
このコマンドを実行すると、以下のフォルダ/ファイルが生成されます。
httpserver └─apache ├─attributes ├─definitions ├─files ├─libraries ├─providers ├─recipes ├─resources └─templates
カレーを作るときは、分量や作り方などを記したレシピをもとに、ニンジンやじゃがいもなどの材料、調味料などを使って料理をします。Chefでのインフラの環境構築も、手順書(レシピ)をもとに、アプリケーションの実行ファイルやライブラリ、設定ファイルなど配置しながら構築します。
ここで生成されたフォルダ群は、料理でいうところの冷蔵庫のような役割で、Chefは、この生成されたフォルダの中に格納したファイルをもとに環境を構築します。
生成されたフォルダの役割は以下のとおりです。構築する環境に応じて必要なフォルダのみを使います。使わないフォルダは削除しても構いません。
フォルダ名 | 説明 |
---|---|
attributes | システムで使う変数を定義したファイル |
definitions | リソースを作成するための設定ファイル |
files | プロビジョン時に展開したいファイル |
libraries | Chefの機能拡張のときに使う |
providers | リソースへの処理を実行するための設定ファイル |
recipes | レシピを格納 |
resources | レシピ内で使われるリソースを定義するための設定ファイル |
templates | ミドルウエアの各種設定ファイルなどのテンプレートファイル |