Help us understand the problem. What is going on with this article?

Vagrantを使って仮想マシンを楽に構築する

気になるLinuxを試しに使ってみたい時はVirtualBoxなどの仮想マシンを使うと思います。実験とか一時的な環境であればそれで十分ですが、何かソフトウェアの実行環境、または開発環境として仮想マシンを使う場合は環境構築にかかる作業が手間に感じる時があります

ある程度手を付けて環境が汚れてきて初期状態に戻したい時や、別の環境を用意したくなった時にVagrantを使えば環境構築の手順を自動的に進めることができるので、手間を省くことができます

install

以下のURLからVagrantとVirtual Boxのそれぞれのパッケージをダウンロードしてインストールします

Boxを選ぶ

Vagrant Cloudのサイトから欲しいOSのイメージ(BOX)を探します

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

色々な人が作っているBoxがあって良し悪しがありますが、以下の物を選ぶと安心でしょう

  • hashicorp (Vagrantの公開元)
  • bento(Chef社)

init

公開されているイメージを自分のPCにダウンロードして、仮想マシンの初期化をします。Vatrant Cloudで見つけたBoxの名前を vagrant init コマンドに指定して実行します

ターミナル(Windowsの場合はPowerShell)を開いてコマンドを実行します

イメージのダウンロードと初期化
# 実行前に作業ディレクトリを作り、その中で作業します
> mkdir vagrant
> cd vagrant

# 例として Ubuntu/xenial をダウンロードします
> vagrant init ubuntu/xenial64

実行した場所にVagrantfileが作られます

実行結果
> vagrant init ubuntu/xenial64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Vagrantfileの編集

必要に応じて用意したい仮想マシンの設定したい時は、生成されたVagrantfileを編集します。変更を間違えて初期状態に戻したい時はVagrantfileを削除して、再度 vagrant init <Box名> を実行すればやり直せます

Vagrantfileの詳しい説明については https://www.vagrantup.com/docs/vagrantfile をご参照ください。大体の項目はVirtualBoxの設定操作に紐づいていますので、必要な所は感覚的に分かると思います

変更したVagrantfileを適用するには --provision オプションを指定して実行します

# 仮想マシンが起動していない場合
> vagrant up --provision

# 起動中の仮想マシンを再起動させて適用する場合
> vagrant reload --provision

起動

Vagrantfileのあるディレクトリ内で vagrant up を実行します

> vagrant up

# 複数の仮想マシンがインストールされている場合は `--provider` オプションで明示して実行します
> vagrant up --provider virtualbox

ssh

起動した仮想マシンのシェルを操作するには vagrant ssh を実行します

> vagrant ssh

ポートフォワーディングの設定をした場合は2222番ポート(デフォルト状態)に接続すればssh接続で操作することもできます。以下でログインできます

  • ユーザー名: vagrant
  • パスワード: vagrant

停止

起動した仮想マシンを停止するには、Vagrantfileのあるディレクトリ内で vagrant halt を実行します

> vagrant halt

その他のコマンド

よく使用するコマンドをまとめました

コマンド 動作 メモ
vagrant box add Boxをダウンロードします
vagrant box remove ダウンロードしたBoxを削除します
vagrant box list ダウンロードしたBoxの一覧を表示します
vagrant init 仮想マシンの初期化 実行したディレクトリにVagrantfileが作成されます
vagrant ssh 起動した仮想マシンのsshシェルを開きます Vagrantfileのあるディレクトリで実行します
vagrant up 仮想マシンを起動します Vagrantfileのあるディレクトリで実行します
vagrant halt 仮想マシンを停止します Vagrantfileのあるディレクトリで実行します
vagrant reload 仮想マシンを再起動します Vagrantfileのあるディレクトリで実行します
vagrant destroy 仮想マシン削除 Vagrantfileのあるディレクトリで実行します
vagrant package 仮想マシンをパッケージング(Box形式で出力)します

tips

ファイルの保存先

通常は上記の vagrant コマンドで削除すればいいですが、Vagrantをアンインストールしてしまった時は以下の場所を開いて、ファイルを削除すればいいです

ダウンロードしたBox

~/.vagrant.d/boxes

~ はユーザーのホームディレクトリ(Windowsならば C:\users\ユーザー名 )です

仮想マシンの関連ファイル

~/VirtualBox VMs

Guest Additionsのバージョンを上げる

仮想マシンにインストールされているAdditionsのバージョンが古いなどで上手く動かない場合は以下のコマンドでバージョンを上げることができます

> vagrant plugin install vagrant-vbguest

双方向に読み書きできる共有フォルダーを作る

Vagrantfile に以下の記述を追加します。上記の手順でGuest Additionsを最新にするとトラブルは少ないと思います

config.vm.synced_folder "./output", "/vagrant/output", type:"virtualbox"
suzutsuki0220
C言語の組み込み開発ばかりだった危機感から、NodeJS、electron、KotlinのAndroidアプリ開発など色々チャレンジ中、最近はTypeScriptを少しだけ触り始めた。エディタはvimからVS Codeに乗り換え中。今一番欲しいものRaspberry Pi。将来の夢は子供と一緒にログハウスを建てること
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away