ページ ツリー
メタデータの末尾にスキップ
メタデータの先頭に移動

Vagrant の概要

Vagrant とは

VM(仮想マシン)を管理するコマンドラインツールです。
「vagrant up」というコマンドを実行するだけで、設定ファイル(Vagrantfile)に基づいた VM を何度でも構築することができます。

 

Vagrant の用語

Box (ボックス)

Vagrant で扱う VM の総称です。 

Provider (プロバイダ)

Box の具体的な実装を指します。
VirtualBox、VMware Fusion、EC2、Docker Engine などがこれにあたります。

Provisioner (プロビジョナ)

起動した Box に対してソフトウェアのインストールや設定を行うプロビジョニングツールです。
ShellScript、Chef、Puppet、Fabric、Ansible、Docker などがこれにあたります。

 

Vagrant での VM 構築

「vagrant up」コマンドを実行すると、Vagrant は Vagrantfile の記述内容に基づき、次の3つの処理を実行します。

  1. Vagrantfile で指定した Box を Vagrant に登録
  2. Vagrantfile で指定した Provider で、Vagrantfile で指定した構成の VM を起動する
  3. 起動した VM に対し、Vagrantfile で指定した Provisioner で、Vagrantfile で指定した設定のプロビジョニングを行う

プロビジョニング3番の処理はいちどでも実行されていると、「vagrant up」コマンドでは実行されません。
プロビジョニングをもういちど行うには「vagrant provision」コマンドを使用します。 

 

Vagrant の基本的なコマンド

操作コマンド
VM の起動
$ vagrant up

起動している VM に対してのプロビジョニング

$ vagrant provision
VM の中断
$ vagrant suspend
VM のシャットダウン
$ vagrant halt
VM の再起動
$ vagrant reload
VM の破棄
$ vagrant destroy
VM の状態確認
$ vagrant status
VM への SSH 接続
$ vagrant ssh
VM の SSH 接続情報を確認
$ vagrant ssh-config

 

Vagrantfile を生成する

まずは利用したい Box に名前を付けて、ローカルマシンに登録します。 

$ vagrant box add <Box名> <.boxファイルのパス>

Box は Virtualbox.esVagrant Cloud に公開されています。

VirtualBox の VM から自分で Box を作成することもできます。(PackerVeewee も使えます)

Box にするための VM の要件などは公式ドキュメントを参照してください。

 

 

 

ローカルマシンに登録されている Box は次のコマンドで確認できます。

$ vagrant box list

 

登録した Box を利用するには、Vagrantfile を作成する必要があります。
Vagrantfile のひな形は次のコマンドで生成できます。

$ vagrant init <Box名>

 

 

生成された Vagrantfile を使用してそのまま VM を起動することもできます。

$ vagrant up

 

※ プロバイダやプロビジョナの設定を書いておけば、起動した VM に対してさらに細かいセットアップを実行できるようになります。

 

Vagrantfile を書く

Vagrantfile

「vagrant init」で生成した Vagrantfile は次のようになっていると思います。

VAGRANTFILE_API_VERSION = '2'
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  
end

Vagrantfile は Ruby のソースコードで表現されていて、Vagrant の設定は 「config」 オブジェクトを経由して、Ruby の構文で自由に操作できます。

※ 「config」という変数名は変更可能ですが、「config」という名前であることを前提にすすめます。

 

Vagrant の基本的な設定

「vagrant up」で利用する Box は、次のように設定できます。

設定項目概要
config.vm.box利用する Box の名前(vagrant box list で確認できる Box 名)を指定します。
config.vm.box_url

.box ファイルのパスを指定します。
「config.vm.box」がローカルマシン上に登録されていない場合に、このパスをもとに Box が登録されます。

※ その他の項目は Vagrant のドキュメント を参照してください。

 

プロバイダ(VirtualBox)の設定

VirtualBox の設定は次のように「vbox」オブジェクトを経由して記述します。

config.vm.provider :virtualbox do |vbox|
  
end
設定項目概要
vbox.nameVirtualBox の VM 名を指定します。
vbox.gui

true: VirtualBox の GUI コンソールを表示します。
false: headless モードで起動します。(GUI コンソールなし)

vbox.customize

VBoxManage コマンドを呼び出して VM の詳細な設定を変更します。
例えば、メモリサイズを変更する場合は次のように記述できます。

vbox.customize ["modifyvm", :id, "--memory", '2048']

※ VBoxManage コマンドの詳細は VirtualBox のドキュメント を参照してください。

 

プロビジョナ(Chef)の設定

Chef の設定は次のように「chef」オブジェクトを経由して記述します。

config.vm.provision :chef_solo do |chef|
  
end
設定項目概要
chef.cookbooks_pathCookbook の格納されているディレクトリをリストで指定します。
chef.log_levelChef のログレベルを指定します。
chef.run_list実行する Recipe をリストで指定します。
chef.jsonAttribute を Hash の形式で指定します。

 

より詳細なカスタマイズをするには

Vagrant を使って実際に運用するには、Vagrant の標準的な設定では不足している部分もあります。
次のページ ではそういった細かいカスタマイズをするための情報を載せています。 

 

 

 

  • ラベルがありません
コメントを書く…