Edited at

Vagrantで開発環境作成

More than 1 year has passed since last update.


Vagrant

おうちから触れる CentOS 環境が欲しくなったので、

今更 Vagrant を Mac Air にいれてみる。

Vagrant: https://www.vagrantup.com/


Vagrant インストール

公式から Mac 用 dmg をダウンロードしてインストール

https://www.vagrantup.com/downloads.html


VirtualBox インストール

Vagrant は VirtualBox, Hyper-V, Docker をサポートしているらしい。

VirtualBox にしてみる。

公式から Mac 用 dmg をダウンロードしてインストール

https://www.virtualbox.org/wiki/Downloads


box の取得

起動イメージを box と呼ぶらしい。

https://atlas.hashicorp.com/boxes/search

から探してダウンロードする。

とりあえず bento/centos-6.8

https://atlas.hashicorp.com/bento/boxes/centos-6.8

にしてみる。


Vagrant 作成・実行

作業ディレクトリ作成

$ mkdir -p Vagrant/centos-6.8

$ cd !$

Vagrant 初期化

$ vagrant init bento/centos-6.8

VM は private network を使う

$ sed -i -e 's/# config.vm.network "private_network"/config.vm.network "private_network"/' Vagrantfile

(ネットワークの種類は割愛。検証用なら private_network が良いのでは)

VM 起動

$ vagrant up

VM 起動確認

$ vagrant status

Current machine states:

default running (virtualbox)

VM 接続

$ vagrant ssh

[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS release 6.8 (Final)

VM 削除

$ vagrant destroy


複数 Vagrant 作成・実行

複数 VM 起動する場合は Vagrantfile を

Vagrant.configure("2") do |config|

config.vm.box = "bento/centos-6.8"

config.vm.define "cent6.8-1" do |vm1|
vm1.vm.network "private_network", ip: "192.168.33.21"
end

config.vm.define "cent6.8-2" do |vm2|
vm2.vm.network "private_network", ip: "192.168.33.22"
end
end

のように書く。

実行は

$ vagrant up

で両方起動する。

名前を指定すれば1台だけ起動もできる。

起動確認

$ vagrant status

Current machine states:

cent6.8-1 running (virtualbox)
cent6.8-2 running (virtualbox)

ディレクトリで閉じているので最初に作った default VM は表示されない。

vagrant で作成した VM を全て確認する

$ vagrant global-status

id name provider state directory
-----------------------------------------------------------------------------
86f4387 default virtualbox running PATH_TO_VAGRANTFILE
04a9930 cent6.8-1 virtualbox running PATH_TO_VAGRANTFILE
0607349 cent6.8-2 virtualbox running PATH_TO_VAGRANTFILE

Vagrantfile を色々いじったりして global-status で出るけど消せない VM ができたら

$ vagrant global-status --prune

で伐採する。


参考

box ファイルサイズ

$ du -hs ~/.vagrant.d/boxes/bento-VAGRANTSLASH-centos-6.8/

280M ~/.vagrant.d/boxes/bento-VAGRANTSLASH-centos-6.8/

VM disk ファイルサイズ

$ du -hs ~/VirtualBox\ VMs/cent68_cent68_1493411084611_79030/

860M ~/VirtualBox VMs/cent68_cent68_1493411084611_79030/

VM イメージがやっぱりちょっと大きい・・・。


まとめ

VirtualBox をコマンド (vagrant) で管理できる。

大量に作成したり、IP 管理したり、起動後にコマンド実行したりが設定できて便利。

設定ファイルも Vagrantfile だけなので Git 管理できる。

検証含めてプロジェクト毎にディレクトリと Vagrantfile を分ける運用が良さそう。

何か困ったらまた追記