Vagrant
仮想化ソフトウェア上に自分でOSをインストールすると、仮想マシンやOSの設定の手間がかかりますが、Vagrantを使うとかなりのところまで設定された状態で使いはじめることができます。それだけでなく、各種の仮想化基盤に対し同一の設定ファイル(Vagrantfile)で設定を行うことができるので、VirtualBox上で開発した仮想マシンと同じ構成の仮想マシンをAWS上に構築するといったことも可能です。また、テキストファイルで設定を行うので設定もバージョン管理することができるという利点もあります。 簡単に使ってみるところまでを書いていきます。
インストール
Vagrantは単体では動けないので、VirtualBoxをインストールしておきます。Vagrantは公式サイトからダウンロードしてインストールします。特に悩むような指定もなく、デフォルトでインストールすれば普通に使えます。インストールしたらコマンドラインで確認します。 code:log
$ vagrant -v
Vagrant 2.2.4
※ Windows上ですがGit Bash 上で実行しているのでプロンプトが違います。
vagrantだけで実行すると利用できるコマンドが表示されるので、ざっと見ておくとよいでしょう。
Boxをダウンロードする
Boxとは、Vagrant用の仮想マシンのベースとなるイメージです。Boxをダウンロードして仮想マシンを作り、パッケージをインストールするなどして環境を整えていきます。
いろいろなBoxがVagrant Cloudに登録されているので、ここで使いたいOSを探します。ただ、説明らしい説明がついてないので探しづらく、また見つかってもそれがどういうものか細かいことがわからなくて困ります。こういう狙いで作っていますとか素の状態からここまでやってありますとか何か説明がほしい気がします。 たとえば、Ubuntu 16.04 LTSを使おうと思って"ubuntu 16"で検索してみると野良(失礼)っぽいBoxがたくさん出てきてどれが信頼できるものなのか判断がつきません。Vagrant関連の記事を見ると、ubuntu/xenial64 私はまあubuntuなんだしubuntuの方がいいのかなくらいの理由で最初ubuntu/xenial64にしましたが、微妙に調子がよくなく、bento版を使うことにしました。後日談:Vagrantのドキュメントに、ubuntuよりもbentoのほうがおススメと書いてありました。
Boxのダウンロードにはvagrant box addコマンドを使います。
code:add.log
$ vagrant box add ubuntu/xenial64
==> box: Loading metadata for box 'ubuntu/xenial64'
==> box: Adding box 'ubuntu/xenial64' (v20190406.0.0) for provider: virtualbox
box: Download redirected to host: cloud-images.ubuntu.com
box:
==> box: Successfully added box 'ubuntu/xenial64' (v20190406.0.0) for 'virtualbox'!
$ vagrant box list
ubuntu/xenial64 (virtualbox, 20190406.0.0)
ダウンロードされたBoxは他の仮想マシンと共有され、容量をムダに使うことはありません。また、これから自分用の仮想マシンを構築していきますが、ダウンロードされたBoxが変更されることはありません。
初期化
構築したい仮想マシン用のフォルダを作成して、vagrant initコマンドでvagrantを初期化します。初期化するとVagrantfileという設定ファイルが作成されます。Vagrantコマンドの多くはカレントディレクトリのVagrantfileに対応する仮想マシンに対して実行されます。 code:init.log
$ 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.
前もってBoxをダウンロードしてないときはinit時にダウンロードされます。
起動&ログイン
実はもうすでに仮想マシンを起動してログインすることができる準備が整っています。簡単!
vagrant upで仮想マシンを起動します。
code:up.log
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/xenial64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/xenial64' version '20190406.0.0' is up to date...
:
:
default: VirtualBox Version: 6.0
==> default: Mounting shared folders...
default: /vagrant => D:/xxxx/work
デフォルトの設定だとVirtualBoxのGUIを表示しないようになっているので、画面上にはOSが動いているところは見えません。動作確認のためにsshで接続します。sshでログインする設定もできており、vagrant sshで即接続することができます。
code:ssh.log
$ vagrant ssh
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-145-generic x86_64)
:
:
vagrant@ubuntu-xenial:~$
ユーザおよび初期パスワードはvagrant/vagrantです。インターネットに出ているわけではないのでこのままでも特に問題はないのでしょうがパスワードくらいは変更しておいたほうがいいんでしょうが、自分でBoxを作るとするとそのままにしておいたほうがいい気もします。わかりません。別のユーザを作ってvagrantはユーザごと消してしまいたい気もするんですがvagrant sshをはじめとしてvagrantの実行に影響がないのかが気になって残したままにしています。
仮想マシンの停止とイメージの破棄
停止はvagrant haltです。いきなり電源OFFするような停止ではなく、普通にシャットダウンしようとします。もちろん仮想マシン側からシャットダウンしても構いません。
code:halt.log
$ vagrant halt
==> default: Attempting graceful shutdown of VM...
haltしただけでは仮想マシンのイメージが残っています。仮想マシンが不要になったらvagrant destroyで仮想マシンのイメージを破棄します。
関連リンク