Carpe Diem

備忘録。https://github.com/jun06t

Knife Solo を使う

Chefをもっと詳しく」でおすすめした"knife solo”を使った方法です。 rubyも入ってない素のOSからスタートしても実装できます。今回は対象サーバに Apache をインストールさせてみましょう。

 

◆作業用PCにKnife Soloをインストールする

Chefのインストール

# curl -L https://www.opscode.com/chef/install.sh | bash

これだけで最新版のChefが入ります。ディストリビューションスクリプトが自動で判断してくれます。便利!

 

Knife Soloのインストール

# /opt/chef/embedded/bin/gem install knife-solo --no-ri --no-rdoc

これで完了です。

 

 

◆Chefのリポジトリ作成

リポジトリというとGitとかを浮かべますが、今回は単にワークスペースのことです。 このワークスペースにcookbookを入れて、インストールしたいサーバ)へインストールをします。

ではリポジトリを作成します。 今回はリポジトリ名を test-repo としますね。

$ knife solo init test-repo

すると以下の様なフォルダが作成されます。

test-repo/
├ cookbooks/  ※セットアップ手順などを書いたレシピ(recipe)
├ data_bags/  ※秘密鍵など、cookbookに持たせたくないデータ
├ environments/  ※development, staging, productionなどの環境分け
├ nodes/  ※インストールする対象サーバの情報
├ roles/  ※役割(Webサーバー、DBサーバーなど)ごとの定義
└ site-cookbooks/  ※特定のサイトに依存するcookbook(自作cookbookなど)

今回使うのは cookbooksnodes です。

 

◆cookbookの用意

Berkshelfを使うと簡単に用意できますが、「Berkshelf? Chefとどう関係?」と混乱するといけないので今回は使いません。 CookbookはChefの公式サイトに登録されてますし、GItHubで野良のcookbookも使えます。

今回は公式サイトから Apache を git clone してみます。

$ cd test-repo/cookbooks
$ git clone http://github.com/opscode-cookbooks/apache2

これでOK。

 

◆nodes/にクライアント情報を登録(作成)

nodes/ にインストールしたいサーバ情報を作成します。

今回対象サーバのIPを 192.168.1.5 とします。このとき nodes/ につくる json ファイルは IP(もしくはホスト名)にしてください。

$ cd test-repo/nodes
$ emacs -nw 192.168.1.5.json
{
  "run_list": [
    "recipe[apache2]"
  ]
}

 

◆対象サーバにインストール

では準備が整ったので作業用PCから"knife solo"を実行して対象サーバ(192.168.1.5)に Apache をインストールします。 まずは対象サーバにも Chef Solo をインストールします。以下のコマンドでできます。

$ cd test-repo
$ knife solo prepare 192.168.1.5

Bootstrapping Chef...
Downloading Chef 11.8.0 for ubuntu...
...

対象サーバのセットアップが完了したら Apache をインストール

$ knife solo cook 192.168.1.5

Running Chef on test...
Checking Chef version...
Uploading the kitchen...
Generating solo config...
Running Chef...
...

 

◆補足

うまく実行できない時は-VVオプションで詳細を表示しましょう

$ knife solo -VV cook 192.168.1.5

以上で完了です。簡単ですね!

 

ソース:

Chef Soloと Knife Soloでの ニコニコサーバー構築 (2) 〜導入編〜