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

Share on:

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

インストール

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

Vagrantの環境設定

1$ cd your_project_directory
2$ vagrant init

Vagrantfileを作成する。

 1# -*- mode: ruby -*-
 2# vi: set ft=ruby :
 3
 4Vagrant.configure("2") do |config|
 5  config.vm.box = "centos/7"
 6  config.vm.network "forwarded_port", guest: 3000, host: 3000
 7  config.vm.provider "virtualbox" do |vb|
 8    vb.memory = "2048"
 9  end
10  config.vm.provision "shell", path: "provision.sh", privileged: false
11end

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

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

 1sudo yum -y update
 2
 3## Developer Toolset 7
 4## https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/
 5sudo yum -y install centos-release-scl
 6sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
 7sudo yum -y install devtoolset-7
 8
 9## Another packages
10sudo yum -y install git zlib-devel openssl-devel readline-devel libyaml-devel sqlite-devel libxml2-devel libxslt-devel libcurl-devel libffi-devel
11
12## Ruby 2.4.3
13git clone https://github.com/rbenv/rbenv.git ~/.rbenv
14git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
15cd ~/.rbenv && src/configure && make -C src
16echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
17~/.rbenv/bin/rbenv init
18echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
19. ~/.bash_profile
20rbenv install 2.4.3
21rbenv global 2.4.3
22rbenv rehash
23gem install bundler
24
25## Node.js
26curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash -
27sudo yum install -y nodejs
28
29## PostgreSQL
30sudo yum -y install postgresql-server postgresql-devel
31sudo postgresql-setup initdb
32sudo service postgresql start
33sudo systemctl start postgresql.service
34sudo systemctl enable postgresql.service
35
36## Redis
37sudo yum -y install epel-release
38sudo yum install -y wget
39sudo rpm -Uvh remi-release-7*.rpm
40sudo yum --enablerepo=remi,remi-test,epel install -y redis
41sudo systemctl start redis.service
42sudo 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$ vagrant ssh-config > ssh.config
2$ scp -F ssh.config vagrant@default:/var/lib/redmine/erd.pdf .

参考リンク