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
でいれる。
・git
はChocolatey
を使うと楽に入れれる。
・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 ファイルがいるので作る。
{
"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は全然わかってない部分が多々あるので色々と指摘いただけると嬉しいです。