Navigation Menu

Skip to content

chef cookbookができるまで

YUKI "Piro" Hiroshi edited this page Apr 18, 2014 · 8 revisions

まず必要なパッケージをインストールする。 Ubuntu 12.04LTSの場合は、libgecode-devをあらかじめインストールしておかないとberksのインストールに失敗するようだった。

% sudo apt-get install libgecode-dev

cookbooksを置くディレクトリを作成し、そこで作業する。

% md -p chef
% cd chef

knife soloとberksをインストールする準備を整え、インストールする。

% vi Gemfile
% cat Gemfile
# -*- ruby -*-
source "https://rubygems.org/"
gem "knife-solo"
gem "berkshelf"
% git add Gemfile
% git commit -m "Add Gemfile"
% bundle install --path vendor/bundle

knife soloでその作業ディレクトリを初期化する。
この操作により、いくつかのファイルとディレクトリが自動的に用意される。

% bundle exec knife solo init .
% git add .chef
% git commit -m "Add knife solo configuration file"

依存することになるcookbooksをインストールする準備を整える。

% vi Berksfile
% cat Berksfile
# -*- ruby -*-
source "http://api.berkshelf.com/"
local_cookbooks_dir = "cookbooks"
cookbook "groonga", :git => "https://github.com/groonga/chef-cookbooks.git", :rel => "groonga"
cookbook "droonga", :git => "https://github.com/droonga/chef-cookbooks.git", :rel => "droonga"
% git commit Berksfile -m "Add groonga and droonga to the list of dependencies"
% bundle exec berks install

2度目以降の実行では、berks updateする。

% bundle exec berks update

プロジェクト固有の情報を置いておくcookbookを作成する。

% knife cookbook create wikipedia-search -o site-cookbooks

管理対象のノードを初期化する。
この操作により、管理対象のノード用の設定ファイルも自動的に用意される。
(ユーザ名、ホスト名は実際のケースに合わせる。ここではあらかじめ準備しておいたVagrantの検証用環境を指定している。)

% bundle exec knife solo prepare vagrant@node0