KVMのVMをVagrantで起動する環境の構築手順です。
KVMはVirtual Boxに比べて、VM起動までの時間が圧倒的に早いです。
なので、VMを作ったり消したりを頻繁にやる人にはオススメです。
ここではKVMの環境を作るために、libvirtを使った手順を説明します。
※注意事項
KVMとVirtual Boxは同じ環境で共存できません。
すでにVirtual BoxでVMを立てている人は全て削除するか、
別の環境を用意してください。
1. 環境
- Ubuntu 18.04 LTS
- Vagrant 2.1.5
2. 必要なソフトウェアのダウンロードとインストール
aptでインストールすると、古いバージョンのVagrantが入ってしまい、なにかと詰まるので手動で新しいバージョンを入れていきます。
$ wget https://releases.hashicorp.com/vagrant/2.1.5/vagrant_2.1.5_x86_64.deb
$ sudo dpkg --install vagrant_2.1.5_x86_64.deb
$ sudo apt update
$ sudo apt build-dep vagrant ruby-libvirt
$ sudo apt install qemu libvirt-bin ebtables dnsmasq
$ sudo apt install libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev
3. Vagrantのプラグインをインストール
$ vagrant plugin install vagrant-libvirt
# 終わったら、一旦ログアウトして、再ログインする
libvirtを入れるとユーザが追加されるので、ログインし直して設定を反映させます。
4. VMを起動してみる
ディレクトリを作って、VMを起動します。
うまく起動できない場合は、トラブルシューティングも見てみてください。
$ mkdir vagrant-test
$ cd vagrant-test
$ vagrant init generic/ubuntu1604
$ vagrant up --provider libvirt
起動できているか確認します。
"running"になっていれば成功です。
$ vagrant status
Current machine states:
default running (libvirt)
The Libvirt domain is running. To stop this machine, you can run
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
初回の起動はboxのダウンロードが入るので、遅いです。
一度、VMを作り直してみると、起動完了までの早さが実感できるかと思います。
# VMを消してから、再度起動
$ vagrant destroy
$ vagrant up --provider libvirt
トラブルシューティング
起動時に以下のようなエラーが出る場合は、libvirtdのユーザ追加がうまくいっていない可能性があります。
Error while connecting to libvirt: Error making a connection to libvirt URI qemu:///system?no_verify=1&keyfile=/home/vagrant/.ssh/id_rsa:
Call to virConnectOpen failed: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
対処方法
libvirtdのグループにユーザを追加してあげれば直ります。
$ sudo adduser $USER libvirtd
Adding user `hoge' to group `libvirtd' ...
Adding user hoge to group libvirtd
Done.
# 一旦、VMを消してから、再度起動
$ vagrant destroy
$ vagrant up --provider libvirt