Vagrant生活始めました

Vagrant。2013年に単語を聞きまくっていたのに手をつけていなかったものをようやく触り始めました。
とりあえず、登場してくるものの概要を理解。

VirtualBox 仮想マシンを立ち上げるソフト(環境)。他にはVMWareAWS
Vagrant 仮想マシンを立ち上げるソフトのCLIラッパーのようなもの。
Chef 仮想マシンのプロビジョニングツール。他にはPuppet、Ansible、普通のShellスクリプトなど。
Box 仮想マシンのテンプレート。
Vagrantfile 仮想マシンの構築設定ファイル。
Berkshelf Chefのパッケージ管理ツール(yum, apt-get, bundle, Composerのようなものっぽい)

VirtualBoxVagrantをインストール

Mac(10.9.1)にVirtualBoxVagrantをダウンロードしてインストーラでインストールしました。

boxの追加

有志の方々がつくられているVagrantbox.esにいろいろアップされています。
CentOS6.4にしました。

# vagrant box add title url の形式
vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box

追加したboxファイルは~/.vagrant.d/boxes/に入っています。

boxの操作

# 一覧
vagrant box list
# 削除
vagrant box remove 名前

boxを使って仮想マシンを起動

mkdir vm
cd vm
vagrant init centos64
vagrant up

実際にVirtualBoxを起動してみると、起動しているのが分かります。

仮想マシンの操作

vagrant upしたディレクトリ内で実行します。

# 確認
vagrant status
# 停止
vagrant halt
# 一時停止
vagrant suspend
# 再開
vagrant resume
# 破棄
vagrant destroy
# 設定再読込
vagrant reload

sshを使って仮想マシンへログイン

vagrant ssh

vagrantという名前のユーザでログインできます。
ホストOSとは、/vagrantを共有しています。

IPアドレスの固定

Vagrantfileの以下の場所のコメントを外します。

config.vm.network :private_network, ip: “192.168.33.10"

設定を再読込します。

vagrant reload

Saharaプラグイン

Vagrantプラグインで、Sandboxモードという仕組みが使えるようになります。
これはRDBMSトランザクションのようなものです。
コミットするまで設定が反映されないのでいろいろやって失敗したらロールバック
これでよければコミット、ということができるようになるようです。

# プラグインのインストール
vagrant plugin install sahara
# プラグインの一覧
vagrant plugin list
# プラグインのアンインストール
vagrant plugin uninstall sahara
# Sandboxモード開始
vagrant sandbox on
# 状態確認
vagrant sandbox status
# ロールバック
vagrant sandbox rollback
# コミット
vagrant sandbox commit
# Sandboxモード終了
vagrant sandbox off

Packer

boxファイルを自分で作りたい場合、Vagrant作者のPackerを使うと良いみたいです。
OSのイメージファイルからboxファイルを作成できます。

参考にさせていただいたサイト

Pakerのインストール

Downloads - Packerからダウンロードしてパスを通せばオッケーみたいですが、
brewの方が楽だったので、brewでインストールしました。

brew tap homebrew/binary
brew install packer

shiguredo/packer-templates

今回Ubuntuが使いたくてjsonファイルを書いていったのですが、たくさん設定があって大変...。
心が折れそうだったとき、時雨堂Packerテンプレートに出会うことができたので、使わせていただきました。
最高です。本当にありがとうございます。

shiguredo/packer-templates · GitHub

git clone https://github.com/shiguredo/packer-templates
cd packer-templates/ubuntu-13.10/
packer build -only=virtualbox-iso template.json
vagrant box add ubuntu-13.10  ubuntu-13-10-x64-virtualbox.box


これで楽に仮想マシンが作れるようになったので、次はChefだなー!