何事もAll's Well That Ends Well

初心者プログラマの備忘録とアニメと時々etc...

今日から始めるVagrant

以前から気になっていたVagrantを試してみる。

環境


OS version
Mac OS X 10.8.5

準備


はじめに、Vagrantに必要なものをインストールする。

vagrantがインストールされているか確認する。

$ vagrant -v
Vagrant 1.3.5

Boxを用意する


第一歩として、boxと呼ばれる仮想マシンのテンプレートを用意する。
boxを用意するには、vagrant box add <box_name> <取得元>コマンドを使う。
boxはvagrantbox.esから取得できる。
取得したboxは~/.vagrant.d配下にキャッシュされる。

$ vagrant box add centos https://github.com/2creatives/vagrant-centos/releases/download/v0.1.0/centos64-x86_64-20131030.box

尚、<取得元>にはhttpだけでなくローカルパスも指定が可能な模様である。

仮想マシン作成から起動まで


仮想マシンの作成

boxが用意できたら、いよいよVMを作成に入る。
まずは、VM構築用のディレクトリを作成する。
作成後、そのディレクトリへ移動しvagrant init <box_name>コマンドを実行しVagrantfileを生成する。

$ mkdir mycent
$ cd mycent
$ vagrant init centos

VMの設定はこのVagrantfileに記述していくようだが、それは一先ず後にする。

起動

Vagrantfileを生成したディレクトリ内でvagrant upコマンドを実行するとVMを起動することができる。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant

vagrant statusコマンドを実行しステータスを確認してみる。

$ vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

正常に起動出来ていることが確認できる。

基本コマンドを試す(接続・停止・削除)


接続

vagrantで作成したVMにログインするにはvagrant sshコマンドを使う。
※ デフォルトではユーザ名・パスワード共にvagrant

$ vagrant ssh

Windowsでは、vagrant sshコマンドがなくPuttyやTeraTermを使ってssh接続する模様。

停止

VMを停止するにはvagrant haltを使用する。

$ vagrant halt
[default] Attempting graceful shutdown of VM...

削除

作成したVMを削除するにはvagrant destroyを使う。

$ vagrant destroy
Are you sure you want to destroy the 'default' VM? [y/N] y
[default] Destroying VM and associated drives...

削除はVMのインスタンスを削除するもので、boxを削除するわけでもなく、Vagrantfileも削除するわけではない。その為、素早く同じ環境を構築出来る。

仮想マシンの設定


先ほど、ちょろっと触れたがVMの設定はVagrantfileで行う。
主な設定項目を見てみる。

  • config.vm.box VMで使用するboxを指定する
  • config.vm.box_url 指定したURLからboxを用意する
  • config.vm.network ネットワークの設定
  • config.vm.provision VM起動時に実行するものを設定する (ex. chef,puppet等構成ツールを指定する)
  • config.vm.provider provider(Virtualbox, VMWare)の基本設定を行う(ex. VMへメモリ割当て容量)

ネットワーク設定

Vagrantfile内のconfig.vm.networkを編集し、VMにプライベートネットワークを設定してみる。
初期のVagrantfileでは
config.vm.network :private_network, ip: "192.168.33.10"がコメントアウトされているので、コメントを外してやる。 そして、vagrant reloadコマンドからVMを再起動させると、プライベートネットワークの設定が完了する。

共有フォルダ


vagrantでは共有フォルダが簡単に扱える。と言うのも、VM(ゲストOS)側の/vagrantディレクトリがデフォルトで共有フォルダとして扱えるからだ。

$ cd /vagrant
$ ls
Vagrantfile

所感


取り敢えず、簡単に環境を構築できて便利。Vagrantfileを共有すれば、開発環境を誰でも再現できていい(実際、github等で公開しているケースも多い模様)。
今回はboxの取得からvagrantの起動・停止等、基礎的な部位を見てきた。
今後はプロビジョニング(chef等と連携)とか試してみる。