Chefで3分クッキング! Webサーバ構築のレシピをRubyで書いてみよう
インフラ構成管理ツールを使いこなす! コードではじめるサーバ構築 第3回
ダウンロード サンプルファイル (4.0 KB)
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 | ミドルウエアの各種設定ファイルなどのテンプレートファイル |
この記事は参考になりましたか?
- インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 阿佐 志保(アサ シホ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

