10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant + Chef で WindowsにRails環境構築

Posted at

Berkshelfが公式にWindowsにも対応してたので、WindowsでRailsをするためにVagrant + Chef で環境構築してみた。

必要なもの

・Chef-dk
・knife-solo
・Vagrant(+Virtualbox)
・cygwin(基本パッケージ + ssh と rsync)
・git (Windowsのパッケージ版。cygwinのだとBerkshelfと相性悪い。)

インストール方法

・ダウンロードしてきてダブルクリックするだけのやつは適当にします。
knife-solo$ chef gem i knife-solo でいれる。
gitChocolateyを使うと楽に入れれる。
・cygwinのsshの設定ファイルを読み込むように /etc/passwd の中の /home/user/cygdrive/c/Users/userに変えておく。

Vagrant の初期設定

vagrant init ubuntu/trusty64

でVagrantfileを作って、port forwarding だけしとく。

...
config.vm.network "forwarded_port", guest: 3000, host: 8080
...

Vagrantfileにchefの設定を色々書く方法もあるけど、それだとローカルモードで自分自身にレシピを適用させるときやVPSにあてるときに使えないので私は使いません。

あとはssh trustyで繋げるようにssh-configを保存しとく。

$ vagrant ssh-config --host trusty >> ~/.ssh/config

Chef の設定

適当なフォルダを作ってその中にBerksfileを作る。

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

cookbook 'apt'
cookbook 'rbenv'
cookbook 'ruby-rails-wrapper', github: "ironsand/cookbook-ruby-rails-wrapper"

インストールするRubyのバージョンとかを変えたいとか他のgemを入れたいときは、このruby-rails-wrapperの中で指定してるので適当に変えて使ってください。

あとrunlistを指定する json ファイルがいるので作る。

nodes/trusty.json
{
  "run_list": [
        "apt",
        "rbenv",
        "ruby-rails-wrapper"

  ]
}

これで準備ができたのであとは$ knife solo cook trusty とするだけで設定が終わります。

エラーなく動き始めたら時間がかかるのでしばらく放置しておきましょう。

動作確認

ちゃんと動いてるか確認するためにssh trustyしてから

$ rails new foo
$ cd foo
$ bundle install
$ bundle exec rails s

でWebrickサーバーを立ち上げて、ホスト側のWindowsのブラウザでlocalhost:8080を開いてRailsの初期画面が出てたら設定完了です!

かなり短くしたつもりなのにそれでもなげえなあ…。

Chefは全然わかってない部分が多々あるので色々と指摘いただけると嬉しいです。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?