vagrant

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 を分ける運用が良さそう。

何か困ったらまた追記