はじめに
動機を3行で記述すると
- 開発、検証作業などでいろいろやりたいお。
- でも仮装の構築、変更は骨が折れるお。
- だからVagrantでやるお!
Vagrant 自体は知っていた
昨年(2015年)に参加した勉強会で「VagrantとDockerがどうこう」という話を聞きましたが、その時は「VagrantのBoxが、誰が作ったかわからないので怖い」という印象を持っていました。
環境構築には時間が掛かる。
この前受講したブートキャンプでも「環境構築」でつまずきました(本題とはあまり関係ないところで)
railsのgemの不一致などが原因でしたが、特定に時間が掛かりました。
※講師曰く、「ベイグラントに環境を用意して〜」 やっぱり必要だ。
私の環境
- ホストOSは Mac OS 10 (El Capitan)
- MacBook Pro (Late 2013) Core i5 メモリは8GB
- Virtualbox5.0 インストール済み
ホストOSはMacOS Xです(ありがち。Linux系OSでも、それほど違わないとは思いますが・・・)
重要なのは、ゲストOSを構築、起動させるためのアプリがVirtualBoxだってこと。
バージョンまではそこまで厳密には問われない・・・と思う。
Vagrantをインストール
Vagrantの公式ダウンロードページによると
https://www.vagrantup.com/downloads.html
- MacOSX
- WINDOWS
- DEBIAN
- CentOS
などが存在しますが、ここはMacOS X を選択してダウンロード
(各自環境に合わせて使ってください)
VMを設置する
Vagrantの場合、VirtualBoxとインストール方法が大きく異なります。
- VirtualBox単品:VirtualBox側で新規仮想マシンを作成、設定してISOイメージをマウントしたりしてインストール
- Vagrantを使う:Box(仮想OSや設定が入ったもの)を元に仮想サーバファイルを作成する。
作業用のディレクトリを作成する。
Vagrantの設定ファイルなどを置く場所を作ります(仮想マシンのデータが入ったファイルとは別物です)
仮にユーザディレクトリの myvm/test_vm に設置する場合
$ cd /Users/rojiuratech/
$ mkdir myvm/test_vm/
とでもして用意してください
box(仮想イメージのようなもの)を選択し、Vagrantfileを生成する
参考元によると、公式(hashicorp)が運営しているVagant Cloud を使う方が良いみたい。(こっちの方が安全そう)
centos6.x系を使いたかったので(2015年末時点で、Webサーバの環境に多い)
絞り込みを実施
bento/centos6.7 を選ぶことに
vmware、parallels、virtualbox向けのboxがそれぞれ用意されていているので、
virtualbox向けの設定コマンドをターミナルで入力し実行。
$ vagrant init --minimal bento/centos-6.7; vagrant up --provider virtual box
- 仮想環境が見つからなかったのでatlasにダウンロードしに行きました
- SSHを設定しました
- マウントします
みたいなメッセージが流れます。
Vagrantfile を確認する
作業ディレクトリに、Vagrantfile が生成されます。
インストール時に minimal と指定したので、本当に最小限の記述しかありません
$ cat Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "bento/centos-6.7"
end
記述形式がRubyなのはVagrantの仕様です。
boxは bento/centos-6.7 を使います。 的な記述があるだけです。
なお、インストールされている vagrant box の一覧は
$ vagrant box list
bento/centos-6.7 (virtualbox, 2.2.2)
と言った感じで、確認可能です。
とりあえず、動かしてみる
2016年1月に加筆修正
VirtualBox マネージャーを表示してみてください
va_hallo_default_(以下略)と言った感じの作成したディレクトリ名を含む、新しい仮装マシーンが生成されているはずです。
Vagrantで起動する
Vagrantfileが存在するディレクトリで
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'bento/centos-6.7' is up to date...
==> default: VirtualBox VM is already running.
※最初にVagrantfileを生成した時には、もう動いていた(私の環境固有だったのかもしれませんが・・・)
vagrantで終了する
$ vagrant halt
==> default: Attempting graceful shutdown of VM...
シャットダウン成功
仮装マシーンの設定、状況に関して
このケースでは特に設定をしていないので、マシンスペックなどは適当ですが・・・動作自体はvirtualBox単品で仮装マシーンを作った時と同じような感じです。
カスタマイズしてみる
Vagrantの醍醐味?の環境カスタマイズを試してみることにしました。
Vagrant.configure(2) do |config|
config.vm.box = "bento/centos-6.7"
config.vm.provider "virtualbox" do |v|
v.name = "Hello Vagrant"
v.cpus = 2
v.memory = 1024
v.customize ["modifyvm", :id, "--vram","16"]
end
end
注目
v.customize ["modifyvm", :id, "--vram","16"]
modifyvm で 設定 id 設定するもの 値
というのが基本みたい。
参考
VagrantとDockerについて名前しか知らなかったので試した
まさに上記リンク先の想定読者で、こうなるとカッコいいなぁ像になりたい。
メリットも、上記リンク先の各種ソフトウェアの概要がしっくりするような。
仮想OSをカスタマイズする
http://qiita.com/darwin/items/8d6b34945407fa5dd26f
自前で生成したboxに設定を記述する・・・と言った趣旨ですが、virtualbox上でVagrantの設定をカスタマイズする方法が簡潔に記載されています。
vagrantのネットワークについて
http://labs.septeni.co.jp/entry/20140707/1404670069
VirtualBox でも、設定がわかりにくい・・・のがこのネットワークですが
[Vagrant & VirtualBox] Vagrant: 同じLAN内の端末から仮想マシンにアクセスする
社内LANの他のマシンから接続させたい