Fedora에서 일반 사용자로 Vagrant를 실행하는 방법은 무엇입니까?

Fedora에서 일반 사용자로 Vagrant를 실행하는 방법은 무엇입니까?

Fedora 23에서 이것을 시도하고 있습니다. libvirt부팅되고 "sudo 비밀번호: /etc/exports 편집 준비. 관리자 권한 필요"를 묻는 메시지가 나타날 때까지 모든 것이 괜찮아 보입니다.

나는 일반 사용자로 Vagrant를 실행하고 있으며 루트로 실행하거나 sudoers 파일에 자신을 추가하고 싶지 않습니다. 테스트를 위해 vagrant up루트로 실행했는데 모든 것이 잘 작동하지만 이렇게 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 웹사이트에서 두 개의 서로 다른 libvirt 상자를 사용해 보았습니다. 여기그리고여기

이 문제에 대한 도움을 주시면 대단히 감사하겠습니다. 감사해요.

관련 정보