どもー
今回はVagrant で構築したVirtual Machine にソフトウェアを Chef で入れていきます。 入れるのは Nginx, iptables, rbenv, MongoDB です。 Rails や Unicorn などは Capistrano から Bundler 経由でインストールするため、Chefからインストールする必要は無いです。
また、Chef で一からコードを用意する必要もないです。既にOpsCode から提供されているオープンソースをベースに構築していきます。これらも依存関係があり、 Ruby の bundler のように依存関係のある chef クックブックを入れてきてくれる仕組みが存在します。 それが Berkshelf です。
てことで chef 等の gem をホストOSに入れるところから始めます。
Chef 環境構築
Chef, Berkshelfをインストール
前回のVagrantfileがあるディレクトリ内でGemfile を作ります。
bundle init
Gemfile:
source "https://rubygems.org" gem "knife-solo", "~> 0.3.0" gem "berkshelf" gem "awesome_print"
からの bundle install
でまず入れていきます.
Berkshelf のひな形作成
bundle exec berks init .
途中 Gemfile, Vagrantfile がConflict とでるので、 n
を入力。
不要なものは消しておきます。
rm Thorfile
Chef のひな形作成
bundle exec knife solo init .
ゲストOS 側にも Chef が入っている必要があるので、もしゲストOS に Chef が入ってないBox を持ってきた場合はvagrant up
で起動した後に以下も入力してください。
bundle exec knife solo prepare vagrant
これで自動でゲストOS に chef がインストールされます。
Berkshelf で必要なソフトウェアを記述
さて、Berksehlf でコードを取ってきます。
Berksfile を開いて追記します。
Berksfile:
site :opscode cookbook "nginx" cookbook "simple_iptables" cookbook "rbenv" cookbook 'mongodb',git:"git://github.com/ringular/chef-mongodb.git"
Mongoはgithub から取ってきたやつじゃないとうまく動きませんでした。
そして bundle exec berks install
で cookbooks 以下にレシピが依存関係込みで追加されていきます。
次は
いよいよゲストOS にソフトウェアをインストールしていきます!