継続的ブログ

主にweb系の技術について書いています

Vagrant + ChefでRails開発環境構築②

追記
(2015/05/26)激古なNginxがインストールされてしまうため、使用するnginxのレシピを「nginx::source」に変更しました。それに伴い、chef.json内にnginxの設定を追加しました。

Vagrant + ChefでRails開発環境構築① - 継続的ブログ

続きです。
Railsの環境を構築していきます。
クックブックは自作せず、コミュニティのクックブックを使用しています。
細かい設定はしていません。
コミュニティクックブックに頼るのはあまりいい方法とは言えませんが、手軽に試せる開発環境を目指しました。

Berksfileの作成

カレントディレクトリにBerksfileというファイルを作成し、以下のように記述します。

source "https://api.berkshelf.com"

cookbook "vim"
cookbook "ruby_build"
cookbook "rbenv", github: "fnichol/chef-rbenv"
cookbook "git"
cookbook "mysql", "~> 5.3.6"
cookbook "nginx"

クックブックをダウンロード

$ berks vendor cookbooks

このコマンドで、cookbooksディレクトリにクックブックをダウンロードしてきます。
vagrant-chef-zeroプラグインはCookbooksディレクトリに置かれたクックブックをChef Zero Serverにアップロードします。

Vagrantfileの修正

Vagrantfileに、実行するクックブックと設定を追記します。

...

# private ipでアクセスできるように設定 
config.vm.network "private_network", ip: "192.168.50.12"

config.vm.provision :chef_client do |chef|
    chef.custom_config_path = "chef_custom_config"
    chef.run_list = [
      "vim",
      "ruby_build",
      "rbenv::user",
      "git",
      "mysql::server",
      "mysql::client",
      "nginx::source"
    ]
    chef.json = {
      "rbenv" => {
        "user_installs" => [
          {
            "user" => "vagrant",
            "rubies" => ["2.2.2"],
            "global" => "2.2.2",
          }
        ]
      },
      "mysql" => {
        "version" => "5.6",
        "port" => "3306",
        "server_root_password" => "vagrant",
        "remove_anonymous_users" => true
      },
      "nginx" => {
        "version" => "1.9.0",
        "source" => {
          "checksum" => "ここにチェックサムを入力"
        }
      }
    }
  end

...

ちなみに、nginxは/opt以下にインストールされます。

checksumの生成方法

まず、wget等でnginx.tar.gzをダウンロードします。

$ curl -o nginx-1.9.0.tar.gz http://nginx.org/download/nginx-1.9.0.tar.gz

次にダウンロードしたファイルに対して、下記コマンドでchecksumの生成をします。

$ shasum -a 256 nginx-1.9.0.tar.gz

出てきた文字列を先程の場所に入力すればOKです。

Provisionersの実行

$ vagrant provision

参考