目次 |
---|
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つの処理を実行します。
...
ヒント |
---|
プロビジョニング(3番の処理)はいちどでも実行されていると、「vagrant up」コマンドでは実行されません。 |
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ファイルのパス> |
Drawio | ||||||
---|---|---|---|---|---|---|
|
ヒント |
---|
Box は Virtualbox.es や Vagrant Cloud に公開されています。 VirtualBox の VM から自分で Box を作成することもできます。(Packer や Veewee も使えます) Box にするための VM の要件などは公式ドキュメントを参照してください。
|
ローカルマシンに登録されている Box は次のコマンドで確認できます。
...
コード ブロック |
---|
$ vagrant init <Box名> |
※ このまま「vagrant up」コマンドを実行すれば、指定した Box をベースにした VM を利用可能です。
Vagrantfile
Drawio | ||||||
---|---|---|---|---|---|---|
|
生成された Vagrantfile を使用してそのまま VM を起動することもできます。
コード ブロック |
---|
$ vagrant up |
Drawio | ||||||
---|---|---|---|---|---|---|
|
※ プロバイダやプロビジョナの設定を書いておけば、起動した VM に対してさらに細かいセットアップを実行できるようになります。
Vagrantfile を書く
Vagrantfile
「vagrant init」で生成した Vagrantfile は次のようになっていると思います。
...
※ 「config」という変数名は変更可能ですが、「config」という名前であることを前提にすすめます。
Vagrant の基本的な設定
「vagrant up」で利用する Box は、次のように設定できます。
設定項目 | 概要 |
---|---|
config.vm.box | 利用する Box の名前(vagrant box list で確認できる Box 名)を指定します。 |
config.vm.box_url | .box ファイルのパスを指定します。 |
※ その他の項目は Vagrant のドキュメント を参照してください。
プロバイダ(VirtualBox)の設定
VirtualBox の設定は次のように「vbox」オブジェクトを経由して記述します。
...
設定項目 | 概要 | ||
---|---|---|---|
vbox.name | VirtualBox の VM 名を指定します。 | ||
vbox.gui | true: VirtualBox の GUI コンソールを表示します。 | ||
vbox.customize | VBoxManage コマンドを呼び出して VM の詳細な設定を変更します。
※ VBoxManage コマンドの詳細は VirtualBox のドキュメント [ https://www.virtualbox.org/manual/ch08.html ] を参照してください。 |
プロビジョナ(Chef)の設定
Chef の設定は次のように「chef」オブジェクトを経由して記述します。
...
設定項目 | 概要 | |
---|---|---|
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.」という警告が出るので、
より詳細なカスタマイズをするには
Vagrant を使って実際に運用するには、Vagrant の標準的な設定では不足している部分もあります。
次のページ ではそういった細かいカスタマイズをするための情報を載せています。