Làm thế nào để tạo hộp vagrant tùy chỉnh từ ví dụ libvirt / kvm?


16

Có nhiều tài nguyên trên Internet để tạo một hộp tùy chỉnh từ một đối tượng VirtualBox. Nhưng tôi muốn biết một phương pháp trực tiếp để tạo một hộp tùy chỉnh trực tiếp từ một thể hiện kvm / libvirt. Vui lòng không đề xuất biến đổi mơ hồ hoặc bất kỳ chuyển đổi VirtualBox sang nhà cung cấp khác.

Câu trả lời:


21

Sau khi dành thời gian với vagrant tôi đã có giải pháp cho hộp tùy chỉnh. trước hết hãy cài đặt bất kỳ HĐH Linux nào trong libvirt / qvm và đăng nhập vào nó để tùy chỉnh và tạo vagrantngười dùng bằng mật khẩuvagrant

adduser vagrant

vagrant người dùng sẽ có thể chạy các lệnh sudo mà không cần nhắc mật khẩu

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

và dán

vagrant ALL=(ALL) NOPASSWD:ALL

làm bất cứ điều gì bạn muốn tùy chỉnh hộp vagrant của bạn và cài đặt openssh-servernếu không được cài đặt trước đó

sudo apt-get install -y openssh-server

đặt khóa ssh từ người dùng mơ hồ

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

mở sudo vi /etc/ssh/sshd_configvà thay đổi

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

khởi động lại dịch vụ ssh bằng

 sudo service ssh restart

cài đặt các gói phát triển bổ sung cho các công cụ để biên dịch và cài đặt đúng

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

thực hiện bất kỳ thay đổi nào bạn muốn và tắt VM. bây giờ, hãy đến với máy chủ lưu trữ máy khách VM đang chạy /var/lib/libvirt/images/và chọn và chọn hình ảnh thô mà bạn đã thay đổi và sao chép ở đâu đó chẳng hạn/test

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

tạo ra hai tập tin metadata.jsonVagrantfiletrong /test entry làm trongmetadata.json

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

và trong 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

chuyển đổi test.img sang định dạng qcow2 bằng cách sử dụng

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

đổi tên ubfox.qcow2 thành box.img

mv ubuntu.qcow2 box.img 

Lưu ý: hiện tại, libvirt-vagrant chỉ hỗ trợ định dạng qcow2. vì vậy, đừng thay đổi định dạng chỉ đổi tên thành box.img. bởi vì nó lấy đầu vào với tên box.img theo mặc định.
tạo hộp

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

thêm hộp vào

vagrant box add --name custom custom_box.box

đi đến bất kỳ thư mục nào bạn muốn khởi tạo vagrant và chạy lệnh dưới đây sẽ tạo tệp Vagrant

vagrant init custom

bắt đầu cấu hình VM

vagrant up --provider=libvirt 

thưởng thức !!!


2
Tôi muốn chỉ ra rằng, sau khi dành toàn bộ thời gian để thu thập các hợp đồng biểu diễn của họ, người lang thang dành một lượng thời gian tương đương để giải nén tar đó một lần nữa. : fubar:
ThorSummoner

2
để bỏ qua tar / chuyến đi khứ hồi, bạn có thể thả Vagrantfile, meta.json và box.img trực tiếp vào~/.vagrant.d/boxes/<name>/0/libvirt/
ThorSummoner

UPvote để giải thích rõ ràng cho một thủ tục tương đối phức tạp. Cảm ơn
Avi Mehenwal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.