Fedoraで一般ユーザーとしてVagrantを実行するには?

Fedoraで一般ユーザーとしてVagrantを実行するには?

Fedora 23でこれを試しています。libvirt起動し、「sudoパスワード:/etc/exports編集の準備。管理者権限が必要です」というメッセージが表示されるまで、すべてが問題ないようです。

私は通常のユーザーとしてVagrantを実行しており、rootとして実行したり、sudoersファイルに自分自身を追加したくありません。私はテストのためにvagrant uprootとして実行しましたが、すべてがうまくいきますが、Vagrantを実行するのは不便です。

問題を解決するためにインターネット検索を行って発見したのは、ファイルの権限を変更することでした/etc/exports。これはうまくいき、vagrant up通常のユーザーとして実行できますが、私にとっては汚い修正のように感じます。 /etc/exports ファイルの権限を変更すると、どのような欠点がありますか?セキュリティを損なうことなく通常のユーザーとしてVagrantを実行したいと思います。

カーネルの更新により、Virtualboxは代替ではありません。私は何も壊れる可能性があり、OracleやrpmfusionがVirtualboxのカーネルモジュールを更新するのを待ちたくありません。

Fedora 開発者ポータルで次のガイドラインに従いました。

$ sudo dnf install vagrant-libvirt
$ sudo systemctl enable libvirtd
$ lsmod | grep kvm

lsmod | grep kvmは何も返さなかったので、qemuドライバを使用するようにVagrantfileを編集しました。

Vagrant.configure("2") do |config|
...
  config.vm.provider :libvirt do |libvirt|
    libvirt.driver = "qemu"
  end
...
end

パスワードプロンプトなしでVagrantでlibvirtを使用する

$ sudo gpasswd -a ${USER} libvirt
$ newgrp libvirt
Synced folders with NFS

$ sudo dnf install nfs-utils && sudo systemctl enable nfs-server

次に、ファイアウォールのnfs、rpc-bind、およびmountdサービスを有効にします。

$ sudo firewall-cmd --permanent --add-service=nfs &&
  sudo firewall-cmd --permanent --add-service=rpc-bind &&
  sudo firewall-cmd --permanent --add-service=mountd &&
  sudo firewall-cmd --reload

パスワードプロンプトなしでVagrantのNFS共有を使用する

$ sudo visudo

これを追加してみてください:

# Allow Vagrant to manage /etc/exports
Cmnd_Alias VAGRANT_EXPORTS_ADD = /usr/bin/tee -a /etc/exports
Cmnd_Alias VAGRANT_NFSD_CHECK = /usr/bin/systemctl status nfs-server.service
Cmnd_Alias VAGRANT_NFSD_START = /usr/bin/systemctl start nfs-server.service
Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /bin/sed -r -e * d -ibak /etc/exports
%vagrant ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY, VAGRANT_EXPORTS_REMOVE

その後、まだ vagrant グループに参加していない場合は、次のコマンドを実行します。

$ sudo getent group vagrant >/dev/null || sudo groupadd -r vagrant
$ sudo gpasswd -a ${USER} vagrant
$ newgrp vagrant

Vagrantを起動して実行します。

$ vagrant init rboyer/ubuntu-trusty64-libvirt 
$ vagrant up

Vagrant box Webサイトで2つの異なるlibvirtボックスを試してみました。 ここそしてここ

この問題にご協力いただきありがとうございます。ありがとうございます。

関連情報