หลังจากใช้เวลากับคนจรจัดฉันได้แก้ปัญหาสำหรับกล่องที่กำหนดเอง ก่อนอื่นให้ติดตั้ง Linux OS ใด ๆ ใน libvirt / qvm และล็อกอินเข้าสู่ระบบเพื่อปรับแต่งและสร้างvagrant
ผู้ใช้ด้วยรหัสผ่านvagrant
adduser vagrant
vagrant
ผู้ใช้ควรจะสามารถเรียกใช้คำสั่ง sudo โดยไม่ต้องใส่รหัสผ่าน
sudo visudo -f /etc/sudoers.d/vagrant
และวาง
vagrant ALL=(ALL) NOPASSWD:ALL
ทำสิ่งที่คุณต้องการปรับแต่งกล่องคนจรจัดของคุณและติดตั้ง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 ตอนนี้มาที่เครื่องโฮสต์ที่ guest VM กำลังทำงานและไปที่ /var/lib/libvirt/images/
และเลือกอิมเมจดิบที่คุณทำการเปลี่ยนแปลงและคัดลอกที่อื่นเช่น/test
cp /var/lib/libvirt/images/test.img /test
สร้างสองไฟล์metadata.json
และVagrantfile
ใน/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 init custom
เริ่มต้นกำหนดค่า VM ของ vagrant
vagrant up --provider=libvirt
สนุก !!!