Berks & Vagrantでubuntu(rails)開発環境を構築

スポンサードリンク

vagrantの起動元となるboxは、packerで作成する。
(いろんなサイトがあるので、今回は省略。)

vagrant のインストール

brewになかったので、サイトからダウンロードしてインストール
Vagrant

VirtualBoxのインストール

VirtualBoxのサイトから、 mac版をダウンロードしてインストール。

最新版は、4.3.22(2015/02現在)だが、4.3.20 をインストールする (MacがSleepするとVagrant上のインスタンスがabortedになる不具合が発生した。 4.3.8 で修正されたようだが、4.3.22で再発している模様。 4.3.20では、この不具合が発生しなかったので、今回は4.3.20をインストール。)

4.3.24で解決しているそうなので、4.3.24をインストール (2015/03現在)

chefとBarksfile

Vagrantでvm起動時に必要なpackageのインストール、自動設定を行うために、chefを利用。
Gemfileに以下を書いて、bundle installする。

vagrant plugin

ubuntu 14.04 の場合、最新のchefをインストールすると、
以下のエラーがでて先に進めない。

The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed!

apt-get update -y -qq

そこで、chef をVersion指定でインストールするために、
vagrantのomnibus pluginをインストール

apt

berksでモジュールをインストールする際に、そもそもapt-get update されていないとインストールに失敗する。
Berksでaptを入れる手もあるが、それ以外のpackge installも兼ねてsite-cookbooksにprebuildを作って対応。

site-cookboosの下にprebuildができるので、recipes/default.rbを編集

berks

モジュールをBerksfileに書いて以下を実行。
chefのcookbooksにダウンロードされる。

Berksfileは、こんな感じ

Vagrantfile

  • packer で作成したubuntuのboxを指定するようにVagrantfileを生成。
  • omnibusでchef_versionを指定する。
  • cookbooks_pathでsite-cookbooksも指定する。prebuild用
  • あとは、run_listにbarksでダウンロードしたcookbookを指定する。

ディレクトリ構成

vagrant 実行

でvagrantの実行。エラーなく終了したら、vagrant sshでログインできる。

コメント

タイトルとURLをコピーしました