libvirt / kvm 인스턴스에서 사용자 정의 vagrant box를 만드는 방법은 무엇입니까?


16

인터넷에는 VirtualBox 인스턴스에서 사용자 지정 vagrant box를 만드는 많은 리소스가 있습니다. 그러나 kvm / libvirt 인스턴스에서 직접 사용자 정의 방랑 상자를 만드는 직접적인 방법을 알고 싶습니다. vagrant-mutate 또는 VirtualBox를 다른 공급자로 변환하는 것을 제안하지 마십시오.

답변:


21

방랑자와 시간을 보낸 후 사용자 정의 상자에 대한 솔루션을 얻었습니다. 우선 libvirt / qvm에 Linux OS를 설치하고 사용자 정의를 위해 로그인하여 vagrant비밀번호로 사용자를 작성하십시오.vagrant

adduser vagrant

vagrant 사용자는 비밀번호 프롬프트없이 sudo 명령을 실행할 수 있어야합니다

sudo visudo -f /etc/sudoers.d/vagrant

붙여 넣기

vagrant ALL=(ALL) NOPASSWD:ALL

vagrant box를 사용자 정의하고 openssh-server이전에 설치 하지 않은 경우 설치하십시오.

sudo apt-get install -y openssh-server

방대한 사용자로부터 ssh 키를 넣다

mkdir -p /home/vagrant/.ssh
chmod 0700 /home/vagrant/.ssh
wget --no-check-certificate \
https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub \
-O /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh

sudo를 열고 vi /etc/ssh/sshd_config변경

PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no

를 사용하여 ssh 서비스를 다시 시작하십시오.

 sudo service ssh restart

도구를 올바르게 컴파일하고 설치하기위한 추가 개발 패키지 설치

sudo apt-get install -y gcc build-essential linux-headers-server

원하는 변경을 수행하고 VM을 종료하십시오. 이제 게스트 VM이 실행중인 호스트 시스템으로 이동 /var/lib/libvirt/images/하여 변경을 수행 한 원시 이미지를 선택하고 예를 들어 어딘가에 복사하십시오./test

cp /var/lib/libvirt/images/test.img  /test 

이 개 파일 작성 metadata.jsonVagrantfile/test 할 일 항목의를metadata.json

{
  "provider"     : "libvirt",
  "format"       : "qcow2",
  "virtual_size" : 40
}

그리고 Vagrantfile

Vagrant.configure("2") do |config|
         config.vm.provider :libvirt do |libvirt|
         libvirt.driver = "kvm"
         libvirt.host = 'localhost'
         libvirt.uri = 'qemu:///system'
         end
config.vm.define "new" do |custombox|
         custombox.vm.box = "custombox"       
         custombox.vm.provider :libvirt do |test|
         test.memory = 1024
         test.cpus = 1
         end
         end
end

를 사용하여 test.img를 qcow2 형식으로 변환

sudo qemu-img convert -f raw -O qcow2  test.img  ubuntu.qcow2

ubuntu.qcow2를 box.img로 이름을 바꿉니다.

mv ubuntu.qcow2 box.img 

참고 : 현재 libvirt-vagrant는 qcow2 형식 만 지원합니다. 따라서 형식의 이름을 box.img로 바꾸지 마십시오. 기본적으로 이름이 box.img 인 입력이 필요하기 때문입니다.
상자 만들기

tar cvzf custom_box.box ./metadata.json ./Vagrantfile ./box.img 

방랑자에 상자를 추가

vagrant box add --name custom custom_box.box

vagrant를 초기화하려는 디렉토리로 이동하여 Vagrant 파일을 생성하는 다음 명령을 실행하십시오.

vagrant init custom

방랑 VM 구성 시작

vagrant up --provider=libvirt 

즐겨 !!!


2
나는 그들을 지르기 위해 시간을 소비 한 후, 방랑자가 그 타르를 다시 압축 해제하는 데 동등한 시간을 소비한다고 지적하고 싶었다. :
fubar

2
왕복 tar / untar를 건너 뛰려면 Vagrantfile, meta.json 및 box.img를 직접 드롭 할 수 있습니다.~/.vagrant.d/boxes/<name>/0/libvirt/
ThorSummoner

비교적 복잡한 절차에 대한 명확한 설명이 필요합니다. 감사합니다
Avi Mehenwal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.