Vagrantの基本コマンドについて

投稿者: | 2020-09-30

今回はローカル環境に仮想マシンを作成するツール・Vagrantで管理人がよく使うコマンドについて解説します。

Vagrantとは

・Vagrant by HashiCorp

https://www.vagrantup.com/

Vagrantは、HashiCorpが提供する仮想マシン構築時の設定をコマンドライン等で簡単に行えるツールです。主にローカルの開発環境、検証環境等の作成に使用されます。

VagrantではBoxというOSのイメージと設定ファイル等を使用し仮想マシンを構築します。仮想マシンの構築自体はVirtualBox等のソフトウェアが行うため、VagrantはVirtualBox等のソフトウェアとセットで使用します。

仮想マシンにOSを導入、ソフトウェアの導入等を手動で行うと非常に手間がかかります。Vagrantで事前にBoxや設定ファイル等を準備しておくことで、簡単にサーバ等の環境を構築することができます。また、Boxや設定ファイルを複数の人と共有することで、メンバーの開発(検証)環境の統一や環境構築の時間短縮にも繋がります。

最近はDockerあたりがよく使われますが、ちょっとした開発環境や検証環境をローカルに構築するのであればVagrantも手軽に使用できるためおすすめです。

Vagrantfileの作成

Vagrantを使用して仮想マシンを構築するには、初めにVagrantfileという設定ファイルを作成する必要があります。Vagrantfileの作成は「vagrant init」コマンドを使用します。

■使い方

vagrant init [Option] [Box名 or URL]

「vagrant init」のみでVagrantfileを作成可能ですが、使用するBoxやダウンロードするURLを事前に指定したい場合はBox名(URL)を指定します。

「vagrant init」コマンドで主に使用するオプションは以下のとおりです。

--box-version VERSION Boxのバージョンを指定する
-f
--force
Vagrantfileが既に存在する場合、上書きする
-m
--minimal
最小のVagrantfileを作成する

「vagrant init」の使用例は以下のとおりです。

・Vagrantfileを作成する
$ vagrant init

・bento/ubuntu-20.04というBoxを指定する
$ vagrant init bento/ubuntu-20.04

・既存のVagrantfileを上書きして新規にVagrantfileを作成する
$ vagrant init -f

Box操作

VagrantのBoxの追加、一覧の表示、削除を行うには、「vagrant box」コマンドを使用します。

■使い方

vagrant box [Subcommand] [Args]

「vagrant box」で主に使用するサブコマンドは以下のとおりです。

add ローカルにBoxを追加する
list ローカルにあるBoxの一覧を表示する
remove ローカルにあるBoxを削除する
update ローカルにあるBoxのバージョンをアップデートする

「vagrant box」の使用例は以下のとおりです。

・bento/ubuntu-20.04というBoxをローカルに追加する
$ vagrant box add bento/ubuntu-20.04

・現在のBoxの一覧を表示する
$ vagrant box list

・bento/ubuntu-20.04というBoxをローカルから削除する
$ vagrant box remove bento/ubuntu-20.04

・ローカルにあるBoxのバージョンをアップデートする
$ vagrant box update

Vagrantの構築済みのBoxは、以下のページから検索できます。

・Discover Vagrant boxes

https://app.vagrantup.com/boxes/search

仮想マシンの構築・起動

Vagrantで仮想マシンの構築・起動を行うには「vagrant up」コマンドを使用します。

■使い方

vagrant up [options] [name|id]

Vagrantfileで複数の仮想マシンを指定している場合、引数を付けずに「vagrant up」を実行すると、複数の仮想マシンの構築・起動ができます。

「vagrant up」の使用例は以下のとおりです。

・全ての仮想マシンを構築(起動)する
$ vagrant up

・webという名前の仮想マシンを起動する
$ vagrant up web

仮想マシンの接続

Vagrantで起動している仮想マシンへ接続するには「vagrant ssh」コマンドを使用します。

■使い方

vagrant ssh [options] [name|id] [– extra ssh args]

複数の仮想マシンを起動している場合、仮想マシン名を指定することで特定の仮想マシンに接続できます。

「vagrant up」の使用例は以下のとおりです。

・仮想マシンに接続する(起動しているマシンが1つの場合)
$ vagrant ssh

・dbという名前の仮想マシンに接続する
$ vagrant ssh db

仮想マシンのシャットダウン・削除

仮想マシンのシャットダウン・削除をするには、「vagrant halt」と「vagrant destroy」コマンドを使用します。

■使い方

vagrant halt [options] [name|id]

vagrant destroy [options] [name|id]

「vagrant halt」は仮想マシンのシャットダウンのみ行います。次回起動時に「vagrant up」を実行すると、現在の仮想マシンの状態から起動できます。

「vagrant destroy」は仮想マシンのシャットダウンおよび削除を行います。削除後に「vagrant up」を実行すると、Vagrantfileから新しく仮想マシンを作成します。

「vagrant halt」「vagrant destroy」で主に使用するサブコマンドは以下のとおりです。

-f
--force
強制的にシャットダウン(削除)を行う

「vagrant halt」「vagrant destroy」使用例は以下のとおりです。

・起動している仮想マシンを全てシャットダウンする
$ vagrant halt

・webという仮想マシンをシャットダウンする
$ vagrant halt web

・全ての仮想マシンを確認なしでシャットダウン・削除する
$ vagrant destroy --force

仮想マシンの状態確認

Vagrantで起動しているマシンの状態を確認するには、「vagrant status」コマンドを使用します。複数の仮想マシンを起動している場合、仮想マシン名を指定することで特定の仮想マシンの状態を確認できます。

■使い方

vagrant status [name|id]

「vagrant status」の使用例は以下のとおりです。

・起動している全ての仮想マシンの状態を確認する
$ vagrant status

・webという名前の仮想マシンの状態を確認する
$ vagrant status web

設定の再読み込み

Vagrantfileの更新後、起動しているマシンの設定を更新するには、「vagrant reload」コマンドを使用します。

■使い方

vagrant reload [vm-name]

「vagrant reload」の使用例は以下のとおりです。

・起動している全ての仮想マシンの設定を再読み込みする
$ vagrant reload

・dbという名前の仮想マシンの設定を再読み込みする
$ vagrant reload db

プラグインの操作

Vagrantにプラグインを追加、一覧の表示、削除等を行うには、「vagrant plugin」コマンドを使用します。

■使い方

vagrant plugin <command> [<args>]

「vagrant plugin」で主に使用するサブコマンドは以下のとおりです。

install プラグインをインストールする
list インストールされているプラグインの一覧を表示する
uninstall プラグインをアンインストールする
update プラグインのアップデートをする

「vagrant plugin」の使用例は以下のとおりです。

・Saharaプラグインをインストールする
$ vagrant plugin install sahara

・インストールされているプラグインを表示する
$ vagrant plugin list

・Saharaプラグインをアンインストールする
$ vagrant plugin uninstall sahara

・プラグインをアップデートする
$ vagrant plugin update

パッケージの操作

Vagrantで仮想マシンからBoxの作成を行うには、「vagrant package」コマンドを使用します。

■使い方

vagrant package [options] [name|id]

「vagrant package」コマンドで主に使用するオプションは以下のとおりです。

--base 指定したVirtualBoxの仮想マシンをBoxに出力する
--output Boxのファイル名を指定する
--vagrantfile BoxにVagrantfileを追加する

「vagrant package」の使用例は以下のとおりです。

・Boxを作成する
$ vagrant package

・VirtualBoxのマシン名がCentOSの仮想マシンからBoxを作成する
$ vagrant package --base CentOS

・Boxのファイル名を「test.box」に指定しBoxを作成する
$ vagrant package --output test.box

・Vagrantfileを含めてBoxを作成する
$ vagrant package --vagrantfile Vagrantfile

スナップショットの操作

Vagrantの仮想マシンからスナップショットを取得するには、「vagrant snapshot」コマンドを使用します。

■使い方

vagrant snapshot <subcommand> [<args>]

「vagrant snapshot」で主に使用するサブコマンドは以下のとおりです。

save 仮想マシンからスナップショットを取得する
restore スナップショットから仮想マシンを復元する
push 仮想マシンからスナップショットを取得する
pop スナップショットから仮想マシンを復元する。復元後、スナップショットは削除される。
list スナップショットの一覧を表示する
delete スナップショットを削除する

Vagrantのスナップショットは「save/restore」と「push/pop」の2種類の方法があります。スナップショットで復元を行う場合、上記の組み合わせのいずれかで行います。

「save/restore」の場合、restoreでマシンを復元してもスナップショットは残りますが、「push/pop」の場合、popでマシンを復元後にスナップショットが削除されます。

「vagrant snapshot」の使用例は以下のとおりです。

・スナップショットを取得する(save/restore)
$ vagrant snapshot save

・スナップショットから仮想マシンを復元する(save/restore)
$ vagrant snapshot restore

・スナップショットを取得する(push/pop)
$ vagrant snapshot push

・スナップショットから仮想マシンを復元する(push/pop)
$ vagrant snapshot pop

・スナップショットの一覧を表示する
$ vagrant snapshot list

・スナップショット・push_1601392679_5236を削除する
$ vagrant snapshot delete push_1601392679_5236

ヘルプの表示

各種vagrantコマンドの後ろに「help」または「-h」をつけると、コマンドに関するヘルプが表示されます。

helpコマンドの使用例は以下のとおりです。

・vagrant initコマンドのヘルプを表示する
$ vagrant box help

・vagrant plugin installコマンドのヘルプを表示する
$ vagrant plugin install -h