vagrant

vagrant備忘録

More than 3 years have passed since last update.

はじめに

ドットインストールのVagrant入門をみて、Vagrantを覚えた時のメモ。
環境は、mac osX / VirtualBox / Vagrant です。

ドットインストール
http://dotinstall.com/lessons/basic_vagrant

vagrant日本語ドキュメント
http://lab.raqda.com/vagrant/index.html

インストール

以下のサイトから最新のものをインストールします。
私は、VirtualBox4.3.20、Vagrant1.6.5でした。

・VirtualBox
https://www.virtualbox.org/

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

boxの取得

box公開サイト
https://vagrantcloud.com/

$ vagrant box add [box名] [box URL]

boxの確認

$ vagrant box list

初期化

以降のコマンドは、このディレクトリで実行する。

$ mkdir hoge
$ cd hoge
$ vagrant init [box名]

起動等

$ vagrant status  # ステータス確認
$ vagrant suspend # 保留状態にする
$ vagrant resume  # 再開(suspendからの復旧)
$ vagrant halt    # シャットダウン
$ vagrant up      # 起動
$ vagrant reload  # Vagrantfileの修正を反映
$ vagrant destroy # 削除

ssh接続

ログインユーザとパスワードはvagrantとなり、sudo権限がある。
vagrant upしていること。

$ vagrant ssh

共有ディレクトリ

ホストOSのVagrantfileのあるディレクトリとゲストOSの/vagrantは共有ディレクトリになっていて、簡単にファイルをやりとりできる。

プロビジョニング

VagrantfileにゲストOSの設定や自動実行させたいコマンドを記述できる。

$ vi Vagrantfile

以下を編集

・ipアドレス

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

※自分以外のPCからも利用した場合、publicとする。

config.vm.network "public_network", ip: "192.168.33.10"

・メモリ

vb.customize ["modifyvm", :id, "--memory", "1024"]

※vagrant1.7.2のときは、以下のように記述した。

config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
end

・コマンド実行

config.vm.provision :shell, :inline => "[コマンド]"

・shell実行

config.vm.provision :shell, :path => "[実行ファイル]"

実行ファイルの例

sudo yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on

・起動時にプロビジョニングを実行

$ vagrant up --provision

・プロビジョニング反映

$ vagrant reload --provision

box作成

Vagrantfileのある場所で実行。

$ vagrant package

プラグイン

$ vagrant plugin list                   # プラグイン確認
$ vagrant plugin install [プラグイン名]   # インストール
$ vagrant plugin uninstall [プラグイン名] # アンインストール

saharaプラグイン

sandbox onした時点からの変更を破棄することができる。

$ vagrant sandbox status   # sandboxモード確認
$ vagrant sandbox on       # sandboxモード開始
$ vagrant sandbox off      # sandboxモード終了
$ vagrant sandbox commit   # 変更の反映
$ vagrant sandbox rollback # 変更の破棄

commitは起動中に実行すると時間がかかる。
vagrant suspendしてから実行すると早くなる。

$ vagrant suspend
$ vagrant sandbox commit