vmbuilder (Ubuntu 8.10 da gelen) işletim sistemi olarak Ubuntu olan sanal makineler yaratabilmenizi sağlayan bir araç. Şu an için Xen, KVM, Vmware Workstation 6 ve VMware Server destekliyor. Sonrasında sanal makineleri başka bir sisteme (desteklediği sistemlerden birisine) kopyalayıp çalıştırabilirsiniz.
1) Ön bilgi
host ismi server1.example.com olan ve IP adresi 192.168.0.100 olan bir makine kullanıyorum.
Bu dokümanda tüm adımları root hakları ile çalıştıracağımızdan tüm komutların başına sudo ekleyin veya
sudo su
yazıp root olun.
2) vmbuilder kurulumu
vmbuilder aşağıdaki komut ile kurulabilir
apt-get install python-vm-builder
3) apt-proxy kurulumu
vmbuilder yeni bir sanal makine (VM) yarattığında tüm paketleri Ubuntu yansısından çekmesi gerekiyor ve bu da uzun süren bir işlem. Bu işlemi hızlandırmak için apt-proxy yi kuruyoruz..
apt-get install apt-proxy
.. bu sayede indirilen paketler cache de tutulacak ve sonraki VM kurulumları çok daha hızlı olacak.
/etc/apt-proxy/apt-proxy-v2.conf dosyasını açın:
vi /etc/apt-proxy/apt-proxy-v2.conf
.. ve varsayılan Ubuntu yansısını size en yakın olan ile değiştirin:
[...]
[ubuntu]
;; Ubuntu archive
backends = http://de.archive.ubuntu.com/ubuntu
min_refresh_delay = 15m
[...]
sonrasında apt-proxy yi tekrar başlatıyoruz:
/etc/init.d/apt-proxy restart
apt-proxy port 9999'u dinliyor, böylece yerel apt-proxy yansımızı vmbuilder script'ine argüman olarak belirtebiliyoruz.
4) vmbuilder kullanımı
vmbuilder kullanımını öğrenmek için aşağıdaki komutlara bakabilirsiniz:
vmbuilder xen ubuntu --help
vmbuilder kvm ubuntu --help
vmbuilder vmw6 ubuntu --help
vmbuilder vmserver ubuntu --help
Şimdi vm7 isminde bir sanal makine yaratacağım, bir tane Xen için, bir tane KVM, bir tane VMware Workstation 6 ve bir tane de VMware Server için. Sanal makinalarınızda bridging kullandığınızı varsayıyorum.
vmbuilder sanal makinaları yaratmak için bir şablon kullanır - şablon dosyası /etc/vmbuilder/libvirt/ klasörü altındadır. Bu şablonu değiştirmemiz gerektiğinden bir kopyasını yaratıp onun üzerinde çalışıyoruz:
mkdir -p ~/vm7/mytemplates/libvirt
cp /etc/vmbuilder/libvirt/* ~/vm7/mytemplates/libvirt/
Şimdi ~/vm7/mytemplates/libvirt/libvirtxml.tmpl dosyasını açıyoruz ..
vi ~/vm7/mytemplates/libvirt/libvirtxml.tmpl
.. ve aşağıdaki gibi olan ağ ayarları bölümünü
[...]
<interface type='network'>
<source network='default'/>
</interface>
[...]
aşağıdaki hale getiriyoruz:
[...]
<interface type='bridge'>
<source bridge='br0'/>
</interface>
[...]
çünkü sanal makinelerimizin bridging kullanmasını istiyoruz (eğer bridge yerine NAT ayarını kullanmak istiyorsanız şablonda değişiklik yapmanıza gerek yok).
Şimdi sıra sanal makinemizi bölümlere ayırmada. vmbuilder.partition adında bir dosya yaratıyoruz ..
vi ~/vm7/vmbuilder.partition
.. ve aşağıdaki gibi bölümlere ayırıyoruz:
root 8000
swap 4000
/var 20000
Bu satırlar root partition (/) olarak 8000MB, swap partition olarak 4000MB ve /var partition olarak 20000MB ayırıyor. Tabiki siz istediğiniz şekilde bölümlendirebilirsiniz (root ve swap bölümlerini unutmadan)..
VM'e openssh-server kurmak istiyorum. Her bir VM'in kendisine özgü OpenSSH anahtarı olabilmesi için, openssh-server'ı VM'i yaratırken kuramıyoruz. Bu yüzden VM ilk kez boot ettiğinde çalışacak olan boot.sh adında bir script dosyası yaratıyoruz. Bu dosya openssh sunucusunu (farklı anahtar ile) kuracak ve kullanıcının ilk login işleminde şifresini değiştirmesi için zorlayacak:
vi ~/vm7/boot.sh
# This script will run the first time the virtual machine boots
# It is ran as root.
# Expire the user account
passwd -e administrator
# Install openssh-server
apt-get update
apt-get install -qqy --force-yes openssh-server
administrator kullanıcı ismini kendi default login adınızla değiştirebilirsiniz.
Bununla ilgili detaylı bilgi için: https://help.ubuntu.com/community/JeOSVMBuilder#First%20boot
Ayrıca ilk login script'i ile ilgili detaylı bilgi için:https://help.ubuntu.com/community/JeOSVMBuilder#First%20login
4.1) KVM için sanal makine yaratma
KVM'de çalışacak bir sanal makine yaratmak için aşağıdaki komutu çalıştırıyoruz:
cd ~/vm7/
vmbuilder kvm ubuntu --suite=intrepid --flavour=virtual --arch=i386 --mirror=http://192.168.0.100:9999/ubuntu -o --tmpfs=- --libvirt=qemu:///system --ip=192.168.0.107 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=boot.sh --mem=256 --hostname=vm7
Çoğu seçenek zaten adından anlaşılıyor. --part partition bilgilerinin olduğu dosyayı (çalıştığımız klasöre göre) belirtiyor (bu yüzden vmbuilder'ı çalıştırmadan önce VM klasörüne gitmek zorundayız), --templates şablon dosyasının olduğu klasörü belirtiyor (yine çalıştığımız klasöre göre), ve --firstboot ilk boot script'ini belirtiyor. --libvirt=qemu:///system KVM'ye bu sanal makineyi mevcut sanal makineler listesine eklemesini söylüyor. --addpkg VM yaratma sırasında kurulmasını istediğiniz Ubuntu paketlerini belirtebilmenizi sağlıyor.
--mirror parametresinde yerel apt-proxy yansısını (http://192.168.0.100:9999/ubuntu) belirtiyorum - localhost veya 127.0.0.1 yerine erişilebilir IP adresimi kullandım çünkü bu yansı VM'lerde /etc/apt/sources.list dosyasında da kullanılacak, ve tabiki, VM 127.0.0.1 e bağlanamazdı. İsterseniz resmi bir Ubuntu yansısını da --mirror ile belirtebilirsiniz (ör. http://de.archive.ubuntu.com/ubuntu). Eğer --mirror parametresini kullanmazsanız varsayılan Ubuntu arşivi http://archive.ubuntu.com/ubuntu kullanılır. Eğer yarattığınız sanal makineyi apt-proxy ye erişimi olmayan (ör. ayrı ağdaki) bir sisteme kopyalayacaksanız apt-proxy yansısını belirtmeyin. Daha önce de belirttiğim gibi, sanal makine vmbuilder komutunda belirttiğiniz /etc/apt/sources.list içerisindeki yansıyı kullanacaktır.
Bunun sonucunda ~/vm7 klasörü altında sanal makinenin disk imajının olduğu ubuntu-kvm altklasörü yaratılmış olacaktır:
ls -l ubuntu-kvm/
root@server1:~/vm7# ls -l ubuntu-kvm/
total 369184
-rw-r--r-- 1 root root 377663488 2008-12-11 14:18 disk0.qcow2
-rwx---r-x 1 root root 49 2008-12-11 14:18 run.sh
root@server1:~/vm7#
VM'in konfigürasyon dosyası /etc/libvirt/qemu klasöründedir (/etc/libvirt/qemu/vm7.xml)
ls -l /etc/libvirt/qemu
root@server1:~/vm7# ls -l /etc/libvirt/qemu
total 32
drwxr-xr-x 3 root root 4096 2008-12-10 15:26 networks
-rw------- 1 root root 963 2008-12-10 16:29 vm1.xml
-rw------- 1 root root 959 2008-12-10 19:10 vm2.xml
-rw------- 1 root root 799 2008-12-10 18:25 vm3.xml
-rw------- 1 root root 799 2008-12-10 18:39 vm4.xml
-rw------- 1 root root 799 2008-12-10 19:25 vm5.xml
-rw------- 1 root root 805 2008-12-11 14:06 vm6.xml
-rw------- 1 root root 818 2008-12-11 14:54 vm7.xml
root@server1:~/vm7#
Eğer sanal makineyi başka bir host'a transfer etmek isterseniz, ubuntu-kvm klasörünü ve VM'in konfigürasyon dosyasını yeni host'a kopyalayın (ör. scp ile).
4.2 Xen için sanal makine yaratma
Xen için sanal makine yaratma komutu KVM için olana benzer:
cd ~/vm7/
vmbuilder xen ubuntu --suite=intrepid --flavour=virtual --arch=i386 --mirror=http://192.168.0.100:9999/ubuntu -o --tmpfs=- --ip=192.168.0.107 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=boot.sh --mem=256 --hostname=vm7
Bunun sonucunda ~/vm7 klasörü altında sanal makinenin disk imajının ve Xen konfigürasyon dosyasının olduğu ubuntu-xen altklasörü yaratılmış olacaktır:
ls -l ubuntu-xen/
root@server1:~/vm7# ls -l ubuntu-xen/
total 303748
-rw-r--r-- 1 root root 20971520000 2008-12-11 14:24 ____.img
-rw-r--r-- 1 root root 8388608000 2008-12-11 14:23 root.img
-rw-r--r-- 1 root root 4194304000 2008-12-11 14:23 swap.img
-rw-r--r-- 1 root root 526 2008-12-11 14:24 xen.conf
root@server1:~/vm7#
Eğer VM'i başka bir host'a transfer etmek isterseniz, ubuntu-xen klasörünü ve VM'in konfigürasyon dosyasını yeni host'a kopyalayın (ör. scp ile). Xen konfigürason dosyasını /etc/zen klasörü altına koymanız gerekiyor.
4.3 VMware Workstation 6 için sanal makine yaratma
VMware Workstation 6 için sanal makine yaratma komutu da yine öncekilere benzer şekilde:
cd ~/vm7/
vmbuilder vmw6 ubuntu --suite=intrepid --flavour=virtual --arch=i386 --mirror=http://192.168.0.100:9999/ubuntu -o --tmpfs=- --ip=192.168.0.107 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=boot.sh --mem=256 --hostname=vm7
Bunun sonucunda ~/vm7 klasörü altında sanal makinenin disk imajının ve konfigürasyon dosyasının olduğu ubuntu-vmw6 altklasörü yaratılmış olacaktır:
ls -l ubuntu-vmw6/
root@server1:~/vm7# ls -l ubuntu-vmw6/
total 368884
-rw-r--r-- 1 root root 402325504 2008-12-11 14:27 disk0.vmdk
-rwx---r-x 1 root root 527 2008-12-11 14:27 vm7.vmx
root@server1:~/vm7#
Eğer VM'i başka bir host'a transfer etmek isterseniz, ubuntu-vmw6 klasörünü yeni host'a kopyalayın (ör. scp ile).
4.4 VMware Server için sanal makine yaratımı
VMware Server için sanal makine yaratımı yine önceki komutlara benzer şekilde:
cd ~/vm7/
vmbuilder vmserver ubuntu --suite=intrepid --flavour=virtual --arch=i386 --mirror=http://192.168.0.100:9999/ubuntu -o --tmpfs=- --ip=192.168.0.107 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=boot.sh --mem=256 --hostname=vm7
Bunun sonucunda ~/vm7 klasörü altında sanal makinenin disk imajının ve konfigürasyon dosyasının olduğu ubuntu-vmserver altklasörü yaratılmış olacaktır:
ls -l ubuntu-vmserver/
root@server1:~/vm7# ls -l ubuntu-vmserver/
total 368828
-rw-r--r-- 1 root root 402128896 2008-12-11 14:31 disk0.vmdk
-rwx---r-x 1 root root 531 2008-12-11 14:31 vm7.vmx
root@server1:~/vm7#
Eğer VM'i başka bir host'a transfer etmek isterseniz, ubuntu-vmserver klasörünü yeni host'a kopyalayın (ör. scp ile).
5) Bağlantı adresleri
vmbuilder: https://help.ubuntu.com/community/JeOSVMBuilder
JeOS and vmbuilder: http://doc.ubuntu.com/ubuntu/serverguide/C/jeos-and-vmbuilder.html
Ubuntu: http://www.ubuntu.com/
Son yorumlar
2 hafta 4 gün önce
3 hafta 1 gün önce
3 hafta 4 gün önce
28 hafta 7 saat önce
29 hafta 2 gün önce
31 hafta 4 gün önce
31 hafta 4 gün önce
34 hafta 3 gün önce
34 hafta 3 gün önce
37 hafta 2 gün önce