Aqutras Members' Blog

株式会社アキュトラスのメンバーが、技術情報などを楽しく書いています。

windows環境下でもスッとRails開発環境構築

初めまして、joniyです。
Virtualbox + Vagrant + Ansible を使って、
Windows環境下でもすぐに開発に移れる環境構築用playbookを作成したので、
具体的な使い方を解説していきます。
UbuntuでRails開発をすぐに始めることを目標にしています。

Go言語の開発環境用playbookも用意しています。
Go言語の場合は、playbookのREADMEに手順を記載していますので、
手順に沿って修正してください。

github.com

必要なもの

  • Windows8以上(7以下は未確認)
  • VirtualBox
  • Vagrant
  • Git

VirtualBoxのインストール

https://www.virtualbox.org/wiki/Downloads
こちらからWindows用のVirtualBoxをダウンロードしてください。

Vagrantのインストール

https://www.vagrantup.com/downloads.html
こちらからWindows用のVagrantをダウンロードしてください。

Gitのインストール

https://git-for-windows.github.io/
こちらからダウンロードしてください。

私家版 Git For Windowsのインストール手順 | OPC Diary

手順はこちらのサイトが詳しく説明されていますので、ご参照ください。
ここでの説明は省略します。

手順

ダウンロード

立ち上げるディレクトリに移動後、以下のコマンドを実行してください。

git clone https://github.com/joniyjoniy/ansible-vagrant.git
cd ansible-vagrant

修正

Vagrantfileが以下のようになっていると思います。
6 ~ 9、13、14行目を構築したい環境に書き換えてください。
6行目では、作成する仮想マシンのホスト名を指定します。
7行目では、仮想マシンのIPアドレスを指定します。
private_networkにする場合は:public_networkの部分を書き換えてください。
8行目では、ssh接続のポートフォワード設定を記述します。
9行目では、serverを起動した際にHost側から
直接アクセスできるようにポートフォワード設定を行います。
13、14行目では、仮想マシンのメモリとCPUコア数を指定します。

 1|# -*- mode: ruby -*-
 2|# vi: set ft=ruby :
 3|
 4|Vagrant.configure(2) do |config|
 5|  config.vm.box = 'ubuntu/trusty64'
 6|  config.vm.hostname = 'vmhost'
 7|  config.vm.network :public_network, ip: '192.168.33.10'
 8|  config.vm.network :forwarded_port, guest: 22, host: 10100, id: "ssh", auto_correct: true
 9|  config.vm.network :forwarded_port, guest: 3000, host: 13000
10|  config.vm.synced_folder ".", "/vagrant", :mount_options => ['dmode=775', 'fmode=664']
11|
12|  config.vm.provider :virtualbox do |v|
13|    v.memory = 1024
14|    v.cpus = 1
15|  end
16|
17|  config.vm.provision "shell", :path => "./settings/provision.sh"
18|end

Rubyのバージョンはlibrary/vars/ruby.ymlに指定しています。
使用するバージョンに変更してください。
(文字列処理の都合で2つあります、何か方法見つけたら修正します)

ruby_version: 2.2.3
ruby_git_version: v2_2_3

起動

vagrant up

完了!

インストールされるもの

  • Ruby
  • Rails
  • MySQL
  • PostgreSQL
  • SQLite
  • Emacs
  • Vim
  • Zsh

終わりに

開発環境構築は重要ですが、開発自体に重きを置きたいのでこういったことは
とっとと自動化してしまうに限りますね。
Macで開発している人は問題なくHost側でAnsibleを実行できると思いますが、
Windowsはssh関連で躓くようで、Guest側で走らせるしか無いみたいです。

そのためprovisionする際にShellでAnsibleをインストールした後に、
playbookを共有させて、Guest側でplaybookを走らせる必要があります。

 1|#! /bin/bash
 2|if ! [ `which ansible` ]; then
 3|    apt-get update -y
 4|    apt-get install -y ansible
 5|fi
 6|
 7|environment="rails"
 8|ansible-playbook -i /vagrant/settings/hosts /vagrant/roles/$environment.yml

私はAnsibleに慣れていますが、社内ではデプロイ環境構築にItamaeを利用しています。
なので今回上げたコードをItamaeで書き直して、注意点など上げられたらなーとか考えてます。

参考サイト

AnsibleをゲストOSに押し込んでVagrant環境構築する - Qiita