VM(仮想マシン)を管理するコマンドラインツールです。
「vagrant up」というコマンドを実行するだけで、設定ファイル(Vagrantfile)に基づいた VM を何度でも構築することができます。
Vagrant で扱う VM の総称です。
Box の具体的な実装を指します。
VirtualBox、VMware Fusion、EC2、Docker Engine などがこれにあたります。
起動した Box に対してソフトウェアのインストールや設定を行うプロビジョニングツールです。
ShellScript、Chef、Puppet、Fabric、Ansible、Docker などがこれにあたります。
「vagrant up」コマンドを実行すると、Vagrant は Vagrantfile の記述内容に基づき、次の3つの処理を実行します。
プロビジョニング(3番の処理)はいちどでも実行されていると、「vagrant up」コマンドでは実行されません。 |
操作 | コマンド |
---|---|
VM の起動 | $ vagrant up |
VM の中断 | $ vagrant suspend |
VM のシャットダウン | $ vagrant halt |
VM の再起動 | $ vagrant reload |
VM の破棄 | $ vagrant destroy |
VM の状態確認 | $ vagrant status |
VM への SSH 接続 | $ vagrant ssh |
VM の SSH 接続情報を確認 | $ vagrant ssh-config |
まずは利用したい Box に名前を付けて、ローカルマシンに登録します。
$ vagrant box add <Box名> <.boxファイルのパス> |
ローカルマシンに登録されている Box は次のコマンドで確認できます。
$ vagrant box list |
登録した Box を利用するには、Vagrantfile を作成する必要があります。
Vagrantfile のひな形は次のコマンドで生成できます。
$ vagrant init <Box名> |
※ このまま「vagrant up」コマンドを実行すれば、指定した Box をベースにした VM を利用可能です。
「vagrant init」で生成した Vagrantfile は次のようになっていると思います。
VAGRANTFILE_API_VERSION = '2' Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| end |
Vagrantfile は Ruby のソースコードで表現されていて、Vagrant の設定は 「config」 オブジェクトを経由して、Ruby の構文で自由に操作できます。
※ 「config」という変数名は変更可能ですが、「config」という名前であることを前提にすすめます。
「vagrant up」で利用する Box は、次のように設定できます。
設定項目 | 概要 |
---|---|
config.vm.box | 利用する Box の名前(vagrant box list で確認できる Box 名)を指定します。 |
config.vm.box_url | .box ファイルのパスを指定します。 |
※ その他の項目は Vagrant のドキュメント [ https://docs.vagrantup.com/v2/vagrantfile/machine_settings.html ] を参照してください。
VirtualBox の設定は次のように「vbox」オブジェクトを経由して記述します。
config.vm.provider :virtualbox do |vbox| end |
設定項目 | 概要 | |
---|---|---|
vbox.name | VirtualBox の VM 名を指定します。 | |
vbox.gui | true: VirtualBox の GUI コンソールを表示します。 | |
vbox.customize | VBoxManage コマンドを呼び出して VM の詳細な設定を変更します。
※ VBoxManage コマンドの詳細は VirtualBox のドキュメント [ https://www.virtualbox.org/manual/ch08.html ] を参照してください。 |
Chef の設定は次のように「chef」オブジェクトを経由して記述します。
config.vm.provision :chef_solo do |chef| end |
設定項目 | 概要 |
---|---|
chef.cookbooks_path | Cookbook の格納されているディレクトリをリストで指定します。 |
chef.log_level | Chef のログレベルを指定します。 |
chef.run_list | 実行する Recipe をリストで指定します。 |
chef.json | Attribute を Hash の形式で指定します。 |
chef.custom_config_path | 標準の状態ではプロビジョニング時に「SSL validation of HTTPS requests is disabled.」という警告が出るので、 |