Vagrantでよく使うコマンドを簡単にまとめています。
※ 本ページはプロモーションが含まれています。
■以下の環境で試しています。
OS:macOS Big Sur(バージョン11.7.6)
Vagrant:2.3.4
VirtualBox:6.1.16
$ vagrant -v
Vagrant 2.3.4
$ VirtualBox -h
Oracle VM VirtualBox VM Selector v6.1.16
Vagrantコマンドのヘルプ。コマンド一覧が見れる。
$ vagrant -h
$ vagrant --help
使用しているVagrantのバージョンと最新バージョンを表示します。
$ vagrant version
Installed Version: 2.2.7
Latest Version: 2.2.14
〜
まずは、URL先のBox(テンプレート)を取得します。http://hogehogeは仮のBoxが存在するurlで、hogeboxという名前で保存します (*Boxとは仮想マシンのひな形ファイルの事です。)
$ vagrant box add hogebox http://hogehoge
Boxの一覧を表示します。
$ vagrant box list
また、このディレクトリでもBoxの一覧を確認できます。
$ ls -lht ~/.vagrant.d/boxes
Boxを削除したい場合はvagrant box removeコマンドでBox名を指定します。(これを実行すると実際にBoxが削除されますよ。)
$ vagrant box remove hogehogebox
次に、Boxから仮想マシンを作成してみます。vagrant initの後にBoxを指定します。
このコマンド例のcentos-7.1は私の環境にあるBoxですので、実際に初期化したいBoxに置き換えてください。
$ vagrant init centos-7.1
コマンドを実行するとVagrantfileファイルが出力されるはずです。あと、存在しない適当な名前のBoxを指定してもエラーは出ずにVagrantfileファイルが出力されますが、vagrant upで仮想マシンを起動するタイミングでエラーが出ます。
仮想マシンの状態を表示します。runningは起動中、poweroffは停止中、savedはサスペンド状態、not createdは未作成です。
$ vagrant status
Current machine states:
default running (virtualbox)
仮想マシンを起動します。
$ vagrant up
仮想マシンを停止(シャットダウン)します。
$ vagrant halt
仮想マシンを再起動します。
$ vagrant reload
起動中の仮想マシンをサスペンド(一時停止・スリープ)状態にします。
$ vagrant suspend
サスペンド状態から復帰します。
$ vagrant resume
仮想マシンを削除します(これを実行すると実際に仮想マシンが削除されます。Vagrantfileだけは残る)
$ vagrant destroy
仮想マシンを起動した状態で、仮想マシンにSSH接続します。
$ vagrant ssh
仮想マシンへのSSH接続設定の情報をssh-configで表示してみます。
$ vagrant ssh-config
Host default
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/hogeUser/testVagrant/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
ssh-configは仮想マシンが起動状態じゃないと出力しません。停止状態だとエラーメッセージが出力されます。
$ vagrant ssh-config
The provider for this Vagrant-managed machine is reporting that it
is not yet ready for SSH. Depending on your provider this can carry
different meanings. Make sure your machine is created and running and
try again. Additionally, check the output of `vagrant status` to verify
that the machine is in the state that you expect. If you continue to
get this error message, please view the documentation for the provider
you're using.
あと、ssh-configで出力したSSH接続設定情報をSSHのconfigファイル(MacOSやLinuxなら~/.ssh/config)に追記する事で、sshコマンドで仮想マシンにSSH接続できるようになります。そして、その時の接続スピードが"vagrant ssh"の時よりちょっと速いです。
"vagrant ssh-config"の出力結果のホスト名(defaultの部分)だけを適当な名前に変更して、そのコードを"~/.ssh/config"に追記します。
Host vagVM
HostName 127.0.0.1
User vagrant
Port 2200
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/hogeUser/testVagrant/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
これでsshコマンドでSSH接続できます(やっぱり接続時はちょっと速い)。
$ ssh vagVM
また、もしもLogLevelや他のSSH接続時の設定を色々と変更したい場合、~/.ssh/configに追記した設定コードを変更すればいい訳です。
次に、vagrant boxコマンドはサブコマンドが必要です。サブコマンドを指定しないと使えるサブコマンドの一覧を表示します。
$ vagrant box
Usage: vagrant box <subcommand> [<args>]
Available subcommands:
add
list
outdated
prune
remove
repackage
update
次に、vagrantのプラグイン(plugin)についてです。
vagrantのpluginは、vagrant pluginコマンドで操作します。
vagrant pluginコマンドはサブコマンドが必要です。サブコマンドを指定しないと使えるサブコマンドの一覧を表示してくれます。
$ vagrant plugin
Usage: vagrant plugin <command> [<args>]
Available subcommands:
expunge
install
license
list
repair
uninstall
update
pluginをインストールする。下のコマンドはsaharaプラグインをインストールします。
$ vagrant plugin install sahara
pluginが追加されたかは、pluginの一覧表示で確認できます。
$ vagrant plugin list
インストールしたpluginをアンインストールします。saharaプラグインをアンインストールしてみます。
$ vagrant plugin uninstall sahara
次に、Vagrantで作成したホストPC上の仮想マシン一覧を表示します。
$ vagrant global-status
id name provider state directory
--------------------------------------------------------------------------------------
0b421ab web virtualbox poweroff /Users/hogeuseer/testweb
c5be2f7 web2 virtualbox poweroff /Users/hogeuseer/testweb2
30c0013 ubuntu1404 virtualbox poweroff /Users/hogeuseer/testubu1404
ead678a default virtualbox poweroff /Users/hogeuseer/MyVagrant/CentOSVM
8b4b2d7 default virtualbox poweroff /Users/hogeuseer/MyVagrant/CentOSVM2
8585108 default virtualbox running /Users/hogeuseer/MyVagrant/CentOS7
96c23c1 default virtualbox poweroff /Users/hogeuseer/MyVagrant/tmp
6046bf3 default virtualbox poweroff /Users/hogeuseer/MyVagrant
The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date (use "vagrant global-status --prune" to prune invalid
entries). To interact with any of the machines, you can go to that
directory and run Vagrant, or you can use the ID directly with
Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"
仮想マシンのidや状態(起動中、停止中)や仮想マシンがディレクトリのどこに存在するかなどの情報が表示されます。
また、idを指定して仮想マシンを削除する事ができます。
$ vagrant destroy 96c23c1
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...
Vagrantでは、仮想マシン自体のバックアップを簡単に取る事ができます。仮想マシンのバックアップを取っておけば、仮想マシン上で何か試して失敗してもバックアップがあるので安心です。それに、仮想マシンのバックアップから、新たに仮想マシンを何個でも複製する事ができます。仮想マシンのバックアップ時には、vagrant packageコマンドを使います。
仮想マシンのバックアップ取得と複製方法については別ページで説明していますので、そちらを参考にしてください。
Vagrantで仮想マシンのバックアップ(Box)を取得し、そのBoxから新規に仮想マシンを作る
またvagrant packageコマンドとは別の方法で、Vagrantにはsaharaというプラグインがあります。saharaを使えば 仮想マシンをサンドボックス化できます。サンドボックス化すれば、仮想マシン上で何か作業をしていて環境が壊れてしまった時に、元の状態に戻す事(ロールバック)が可能です。ですのでsaharaによるサンドボックス化でも、仮想マシン上で気軽に何かを試す事ができるようになります。
saharaのインストールと使い方については別ページで説明していますので、そちらを参考にしてください。
Vagrantでsaharaで仮想マシンをサンドボックス化(sandbox)し、作業前に戻せるようにする
Vagrantでは、1つのVagrantfileファイルで複数台の仮想マシンを作成し、コントロールする事が可能です。
これによって、自分のPC上に仮想的なネットワークを構築し、そこに複数のWebサーバ、APIサーバ、DBサーバなどの仮想マシンを作ることができます。
ですので、サーバだけでなくネットワークなどのインフラの学習環境やテスト環境を構築できます。
AWSなどの便利なクラウドサービスもありますが、個人で有料のクラウドサービス上に仮想マシンを何個も起動するのはそれなりにお金もかかりますから、このVagrantの機能をうまく活用するのも1つの手かと思います。
1つのVagrantfileファイルで複数台の仮想マシンを作成する方法については別ページで説明していますので、そちらを参考にしてください。
1つのVagrantfileで複数台の仮想マシンを作り、仮想的なネットワークを構築する