Chef超入門、Chef-soloでVagrant上の仮想マシンのCentOSにGitをインストールするとこまで

以前から興味のあった Chef に先日ようやく手を出しました。入門してみた感想を先に言うと、Vagrant も Chef(Chef-solo)もそれほど難しくないので、Ruby/Rails が書けてサーバー設定の知識のある人なら、入門程度であれば1日で十分学習できます。それに比べると Rails は本当に学習コスト高いわけですが…

Chef – Code Can | Chef

スポンサーリンク

なお、今回の作業では Vagrant を使った仮想マシン環境は構築済みとします。Vagrant と VirturalBox のセッティングまでは、とても簡単です。以下ページの続きとして作業を行いました。

MacにVagrantとVirtualBoxをインストール | EasyRamble

最初に何となくで良いので Chef 独特の用語をおさえとく

Chef の世界を理解する上では、最初 Cookbook(クックブック)や Recipe(レシピ)、Provisioning(プロビジョニング)など独特の言葉の概念を理解するのが難しいと感じました。以下のページの説明が分かりやすいです。

サーバー設定ツール「Chef」の概要と基礎的な使い方 – さくらのナレッジ

分からない部分は読み飛ばしても、使ってるうちに分かってくるので心配無用。かいつまんで重要語句を説明しますと…

Provisioning(プロビジョニング): サーバーの構築や管理を自動で行うことを指す用語。
Cookbook(クックブック): プロビジョニングに必要なファイルを一塊にしたもの。この中に Recipe が含まれます。
Recipe(レシピ): 特定のパッケージ・サービスをインストールするための手順を Ruby コードで表したもの。

また、Cookbook は色々なパッケージ・サービスに対応したものが、既にコミュニティで配布されています。

Opscode Community

例えば、今回例として使う Git の Cookbook は以下のURLにあります。

git の Cookbook → https://github.com/jssjr/git
その Recipe のコード → https://github.com/jssjr/git/tree/master/recipes

また、Chef というツールには、Chefサーバー/クライアントとChef-soloの二通りの使い方があります。今回は入門編なので、利用が簡単な Chef-solo を使いました。

では以上を踏まえて本題へ。

Chef と Berkshelf の gem をインストール

Vagrantfile を作成したディレクトリで作業を行います。

現時点では、ディレクトリは以下の内容。

このディレクトリで、bundle init で Gemfile を作成し、chef と berkshelf の gem をインストールします。vendor/bundle 以下に bundle install。

Berkshelf は Cookbook を管理するツールです。Ruby, Rails での gem 管理ツールである Bundler に相当します。

Berkshelf

Berksfile 作成

Berkshelf インストールで berks コマンドが使えるようになるので、berks init で Berksfile を作成します。Berksfile はインストールする Cookbook を指定するファイルです。Berksfile は、Bundler における Gemfile に相当します。

なんかエラー出ました。正常に動作する場合は、Gemfile と Vagrantfile の上書きを尋ねられるので n (no) でスキップして進めるらしい。

解決策がわからないので、手動でも良いらしいので、とりあえず手動で Berksfile を作成。git をインストールする cookbook を指定します。

ちなみに Berksfile は、Berkshelf のバージョン2 と 3 で書き方が違うとのこと。site :opscode と行頭に書いてある情報が多かったけど、Berkshelf3 では、Gemfile 同様 source を使うそうです。

Berkshelf: 2.x to 3.0 Upgrade Guide

Cookbook をインストール

続いて berks vendor コマンドで、Git の Cookbook をインストールします。Bundler での bundle install に相当。

berks vendor [PATH] という書式になります。

この時点で、こんな感じのディレクトリ内容になりました。

その他の berks コマンドについては…

で確認できる。

インストール済みの全ての Cookbook を確認。(dependencies を含む)

git がちゃんと含まれています。

chef_solo の設定を行いプロビジョニング

Git 用の Chef のレシピを VM に適用させるために、Vagrantfile に chef_solo ディレクティブを追加します。

Vagrantfile

設定が終了したら、vagrant reload してプロビジョニングを実行。

これで vagrant 上の仮想マシンの CentOS に git がインストールされました。仮想マシンにログインして、確認します。

以上で Chef-solo超入門は終わりです。いかがでしょうか?私は思わず Chef すごい!と唸ってしまいました。サーバー構成が全てコードで管理できることになります。

必要なクックブックを用意 → サーバーへプロビジョニングという流れになるので、これはサーバー構築・管理が楽しくなりそうです。次は、独自にカスタマイズした Recipe や Cookbook の作成にトライです。

スポンサーリンク
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!