Vagrant basics

  • 816
    いいね
  • 1
    コメント

概要

仮想環境(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の設定

sample.rb
$ 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