##概要
仮想環境(VirtualBoxなど)上への仮想マシンの立ち上げ、操作が可能。
##用語
###プロバイダ
仮想環境
eg.VirtualBoxやVM Ware、EC2など
###プロビジョニング
ミドルウェアの設定やインストールを行うツール
eg.シェルスクリプト、Chef(chef-solo, chef-client)、Puppetなど
###Boxファイル
仮想マシン起動の際にベースとなるイメージファイルのこと。
仮想環境ごとに必要。
通常はOSイメージから作成する。
Vagrant利用の上で最低限必要な設定(Vagrantユーザの作成、sshdの起動、プロビジョニングツールのインストール)のみを行っておくのが普通。
###Vagrantfile
構築する仮装マシンのスペックやプロビジョニングツールの指定など、仮想マシンの構成を記述する。
Rubyベース。
基本的に、本ファイルとプロビジョニングツールの設定ファイルの2つがあれば、どこでも同じ環境を再現できる。
##コマンド
###基本
# バージョン確認
$ vagrant -v
# ヘルプ
$ vagrant -h
###仮想環境のベースとなるBoxファイルを準備
$ vagrant box add NAME URL
# sample
$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
(Vagrantfileのconfig.vm.boxディレクトリで指定する。)
BoxファイルはVeeweeで作成することも出来る。
http://www.ryuzee.com/contents/blog/6614
###Box一覧の確認
$ vagrant box list
###Vagrantfileの作成
$ vagrant init BOX_NAME
# sample
$ vagrant init centos64
###Vagrantfileの設定
$ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box="centos64"
//ネットワークの設定
config.vm.network :private_network, ip:"192.168.33.10"
//GUIモードの設定
config.vm.provider :virtualbox do |vb|
vb.gui = true
end
end
※ホストオンリーネットワーク
→ホストOSとゲストOS間でのみ通信できるネットワーク。
上記では、ゲスト側に192.168.33.10(任意)を割り当てている。
以下は古い書き方。
誤)config.vm.network :hostonly, "192.168.33.10"
正)config.vm.network :private_network, ip:"192.168.33.10"
###仮想マシンの起動
$ vagrant up
※Vagrantfileと同じディレクトリで実行する
GUIモードにしているとVirtualBoxが起動するので、id/passともに"vagrant"でログイン
###sshでログイン
$ vagrant ssh
※仮想マシンにてsshdが起動している必要あり。
###通常の方法でssh出来るようにする。
Chef Soloをknife-soloで動かすことを見越して、通常のsshアクセス、つまり
$ ssh 192.168.33.10
でsshできるようにする。
# ~/.ssh/config
Host 192.168.33.*
IdentityFile ~/.vagrant.d/insecure_private_key
User vagrant
もしくは
$ vagrant ssh-config --host melody
で仮想サーバへのssh設定を吐き出してくれるため、
$ vagrant ssh-config --host melody >> ~/.ssh/config
とすることで
$ ssh melody
でログインできるようになる。
###sshログイン時の設定確認
$ vagrant ssh-config
###status確認
$ vagrant status
Current machine states:
default running (virtualbox)
(仮想マシン名) (status)
###仮想マシンの停止
$ vagrant halt
###仮想マシンの削除
$ vagrant destroy
###仮想マシンのエクスポート
$ vagrant package
→package.boxという名前のBoxファイルが生成される。
それを配布し、受け取った側は
$ vagrant box add new_box package.box
で利用できる。
vagrantをより便利に
sahara
saharaを用いると、簡単に仮想マシンの状態保存・ロールバックが出来ます。
saharaでVagrantの状態管理
http://qiita.com/kidachi_/items/ba365905b2a770c72be1
chef関連
サーバ構成管理ツールといえばchef。
Chefの基本
http://qiita.com/kidachi_/items/9d569b8673e70ef93f0e
knife-soloによるChefの実行
http://qiita.com/kidachi_/items/b222fb2892e6108c46d5