Help us understand the problem. What is going on with this article?

Vagrant,chef-soloでRails開発環境の構築

More than 3 years have passed since last update.

はじめに

以下を参考
http://murayama.hatenablog.com/entry/2014/10/15/073819
翻訳サイトではありますが、vagrantとは的なところから丁寧に説明してくれています。

githubのurl名指しでとってきてるcookbookをchefが参照できなかったり、cookbook自体が非推奨になってたり、railsのaoutloadが効かなかったりしたので、少し変えてあります。

1. 各種インストール

$ brew cask install vagrant
$ brew cask install virtualbox
$ vagrant plugin install vagrant-vbguest
$ vagrant plugin install vagrant-librarian-chef

2. 使うcookbookをCheffileに定義

そして自分のrailsプロジェクトrootにて、
Cheffileを作ります。

$ vi Cheffile

Cheffile
site "http://community.opscode.com/api/v1"

cookbook 'apt'
cookbook 'build-essential'
cookbook 'mysql', '5.5'
cookbook 'ruby_build'
cookbook 'nodejs'
cookbook 'ruby_rbenv'
cookbook 'vim'
cookbook 'timezone_lwrp'

と書きます。

mysqlのバージョンは以下を参考に、欲しいOSに適したバージョンにするといいと思います。
https://supermarket.chef.io/cookbooks/mysql

3. vagrantファイル用意

続いて、自分のrailsプロジェクトrootにて、

$ vagrant init

とするとVagrantfileが出来上がります。
それ以下のように編集します。

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # 欲しいOSを探して指定するといいと思う。
  # https://atlas.hashicorp.com/boxes/search
  config.vm.box = "ubuntu/precise64"

  # virtual boxの設定
  config.vm.provider :virtualbox do |vb|

    # メモリとかcpuとか指定できる
    # http://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvm
    vb.customize [
      "modifyvm", :id,
      "--memory", "2048"]

    # VMのシステム時刻がずれていく問題の対応
    vb.customize [
      "setextradata", :id,
      "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled", 0]
  end

  # nfs経由で接続
  # うまくいかない場合はホスト側の /sbin へのpathを通してあげる
  config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.network :forwarded_port, guest: 3000, host: 3000
  config.vm.synced_folder ".", "/vagrant", type: "nfs"

  # 仮想環境がhostの秘密キーを使えるようになる
  config.ssh.forward_agent = true

  # Chef Solo の設定
  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = ["cookbooks", "site-cookbooks"]

    # 使うrecipe
    chef.add_recipe "apt"
    chef.add_recipe "nodejs"
    chef.add_recipe "ruby_build"
    chef.add_recipe "ruby_rbenv::system"
    chef.add_recipe "ruby_rbenv::user"
    chef.add_recipe "vim"
    chef.add_recipe "mysql::client"
    chef.add_recipe "timezone_lwrp"

    # recipeのnodeに渡したいことをここに書く
    chef.json = {
      rbenv: {
        user_installs: [{
          user: 'vagrant',
          rubies: ["2.0.0-p195"],
          global: "2.0.0-p195",
          gems: {
            "2.0.0-p195" => [
              { name: "bundler" }
            ]
          }
        }]
      },
      tz: "Asia/Tokyo"
    }
  end
end

4. vagrant実行

vagrant実行

$ vagrant up

中に入る

$ vagrant ssh

/vagrant にrailsプロジェクトの一式が入っているかと思います。
bundle install とか rails s をよしなに実行していただければ。

193
CureAppで治療アプリを作っています。妊娠糖尿病の治療アプリを作りたい。
cureapp
医学的エビデンスに基づいた医療機器プログラム『治療アプリ』を開発しています。
https://cureapp.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away