windows環境下でもスッとRails開発環境構築
初めまして、joniyです。
Virtualbox + Vagrant + Ansible を使って、
Windows環境下でもすぐに開発に移れる環境構築用playbookを作成したので、
具体的な使い方を解説していきます。
UbuntuでRails開発をすぐに始めることを目標にしています。
Go言語の開発環境用playbookも用意しています。
Go言語の場合は、playbookのREADMEに手順を記載していますので、
手順に沿って修正してください。
必要なもの
- 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で書き直して、注意点など上げられたらなーとか考えてます。