ログイン中のQiita Team
ログイン中のチームがありません

Qiita Team にログイン
コミュニティ
OrganizationイベントアドベントカレンダーQiitadon (β)
サービス
Qiita JobsQiita ZineQiita Blog
Vagrant
libvirt
4
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

Vagrant + libvirt の環境構築手順

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
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
s-nishimaki

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
Azure Kubernetes Serviceに関する記事を投稿しよう!
~
4
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー