VagrantとVirtualBoxでMac上に開発環境を作るメモ(CentOS7/Ruby 2.4.3)

MacでVagrantとVirtualBoxを使って開発環境を作るメモです。

インストール

今回はCentOS7のBOXを使用したが、他のBOXは以下から探せる。

Vagrantの環境設定

1
2
$ cd your_project_directory
$ vagrant init

Vagrantfileを作成する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "forwarded_port", guest: 3000, host: 3000
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
  end
  config.vm.provision "shell", path: "provision.sh", privileged: false
end

Chef、PuppetやAnsibleなどのプロビジョニング・ツールとも連携できるが、とりまシェルスクリプトで。provision.shを作成する。

Railsを使うためRuby2.4.3とNode.js、PostgreSQL、Redisをインストール。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
sudo yum -y update

## Developer Toolset 7
## https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/
sudo yum -y install centos-release-scl
sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
sudo yum -y install devtoolset-7

## Another packages
sudo yum -y install git zlib-devel openssl-devel readline-devel libyaml-devel sqlite-devel libxml2-devel libxslt-devel libcurl-devel libffi-devel

## Ruby 2.4.3
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
~/.rbenv/bin/rbenv init
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
. ~/.bash_profile
rbenv install 2.4.3
rbenv global 2.4.3
rbenv rehash
gem install bundler

## Node.js
curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash -
sudo yum install -y nodejs

## PostgreSQL
sudo yum -y install postgresql-server postgresql-devel
sudo postgresql-setup initdb
sudo service postgresql start
sudo systemctl start postgresql.service
sudo systemctl enable postgresql.service

## Redis
sudo yum -y install epel-release
sudo yum install -y wget
sudo rpm -Uvh remi-release-7*.rpm
sudo yum --enablerepo=remi,remi-test,epel install -y redis
sudo systemctl start redis.service
sudo systemctl enable redis.service

provision.shを作成したら、コマンドラインからvagrantを起動する。

1
$ vagrant up

インストールが終わるまでしばし待ち、sshで接続する。

1
$ vagrant ssh

Vagrantのコマンド

リロード

1
$ vagrant reload

シャットダウン

1
$ vagrant halt

サスペンド

1
$ vagrant suspend

VMの削除

1
$ vagrant destroy

ホストOSとのファイル共有

デフォルトではVagrantfileのディレクトリがホストOSの/vargrantに同期される(ホスト→ゲストの一方通行)。ただしrsyncのため(90秒インターバル?)ホスト側でvagrant rsync-autoを起動しておく必要がある。

同期のタイプとしてSMB、NFS、VirtualBOX、rsyncがあるが、パフォーマンスや信頼性の点でrsyncが良さそう。

scpを使う

1
2
$ vagrant ssh-config > ssh.config
$ scp -F ssh.config [email protected]:/var/lib/redmine/erd.pdf .

参考リンク