ボクココ

個人開発に関するテックブログ

アプリエンジニアがインフラに挑戦その3

どもー

今回はVagrant で構築したVirtual Machine にソフトウェアを Chef で入れていきます。 入れるのは Nginx, iptables, rbenv, MongoDB です。 RailsUnicorn などは 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 にソフトウェアをインストールしていきます!