Örneğin: CentOS imajı¶
Bu örnek bir CentOS imajını nasıl kuracağınız gösterir ve temelde CentOS 7 üzerine yoğunlaşır. CentOS kurulumu sürümler arasında farklılık gösterebileceğinden, farklı bir CentOS sürümü kullanırsanız kurulum adımları değişebilir.
Bir CentOS kurulum ISO’su indirin¶
CentOS yansıları sayfasına gidin.
Yansılardan birinin yanındaki sağ sütunlardan birindeki
HTTP
bağlantılarına tıklayın.Kullanmak istediğiniz CentOS sürümünün dizin bağlantısına tıklayın. Örneğin,
7/
.isos/
dizin bağlantısına tıklayın.64-bit imajlar için
x86_64/
dizin bağlantısına tıklayın.İndirmek istediğiniz ağ kurulum ISO imajına tıklayın. Örneğin,
CentOS-7-x86_64-NetInstall-1611.iso
iyi bir seçimdir çünkü daha küçük bir imajdır ve eksik paketleri kurulum sırasında internetten indirir.
Kurulum sürecini başlatın¶
Kurulum sürecini ya virt-manager ya da virt-install komutu ile daha önce açıklandığı şekilde başlatın. virt-install komutunu kullanırsanız VNC istemcinizi sanal makineye bağlamayı unutmayın.
Şunları varsayın:
Sanal makine imajınızın ismi
centos
; bu isme imaj durumunu değiştirmek için virsh komutları kullanırken ihtiyaç duyarsınız.Ağ kurulumu ISO imajını
/data/isos
dizinine kaydettiniz.
virt-install komutunu kullanırsanız, komutlar şöyle görünmelidir:
# qemu-img create -f qcow2 /tmp/centos.qcow2 10G
# virt-install --virt-type kvm --name centos --ram 1024 \
--disk /tmp/centos.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=centos7.0 \
--location=/data/isos/CentOS-7-x86_64-NetInstall-1611.iso
Kurulum adımını geçin¶
İlk Kurulum önyükleme menüsünde, Install CentOS 7 seçeneğini seçin. Kurulum programı başladıktan sonra, tercih ettiğiniz dili seçin ve kurulum özetine geçmek için :guilabel:`Devam Et`e tıklayın. Öntanımlıları kabul edin.

Ethernet durumunu değiştirin¶
Öntanımlı Ethernet ayarı Kapalı``dır. Ethernet ayarını ``Kapalı``dan ``Açık``a getirin. Özellikle, ``IPv4 Ayarlarının Yöntemini
öntanımlı değeri olan Otomatik (DHCP)
olarak bırakın.

Makine Adı¶
Yükleyici bir makine adı seçmenize izin verir. Öntanımlı (localhost.localdomain
) iyidir. Daha sonra kurduğunuz cloud-init
paketi yeni bir sunucu bu imajı kullanarak hazırlandığında makine adını ayarlar.
Yükleyiciyi bir CentOS web sunucuya çevirin¶
CentOS sürümüne bağlı olarak, ağ yükleyici kullanıcının bir URL ya da web sitesi ve CentOS yansılarından biriyla bağlantılı CentOS dizini belirtmesini gerektirir. Yükleyici tek bir URL sorarsa, http://mirror.umd.edu/centos/7/os/x86_64
geçerli bir URL olabilir.
Not
mirror.umd.edu
adresine alternatif olarak başka yansılar kullanmayı düşünün.

Yükleyici web sitesi ismini ve CentOS dizinini ayrı ayrı sorarsa, şunları girebilirsiniz:
Web sitesi ismi:
mirror.umd.edu
CentOS dizini:
centos/7/os/x86_64
Yansıların tam listesini almak için CentOS yansı sayfasına göz atın, yansının web sitesi ismini almak için HTTP
bağlantısına tıklayın.
Depolama aygıtları¶
Kurulumunuzun ne tür aygıtlar kullandığı sorulursa, Virtio Blok Aygıtı seçin.
Diskleri bölümlendirin¶
Diskleri bölümlendirmek için farklı seçenekler bulunur. Öntanımlı kurulum LVM bölümleri kullanır, ve üç bölüm oluşturur (/boot
, /
, swap
), bu yeterlidir. Alternatif olarak /
konumuna bağlı tek bir ext4 bölümü de oluşturabilirsiniz, bu da yeterlidir.
Emin değilseniz, kurulum için öntanımlı bölümleme şemasını kullanın. Bir şemanın diğerlerine göre doğuştan iyi olduğu söylenemez ancak dinamik olarak genişletmek istedğiniz bölümü listenin sonuna bırakmanız herhangi bir bölümün sınırlarına girmeden genişleyebilmesini sağlar.
Kurulum seçeneğini seçin¶
Kurulum adımını öntanımlı seçeneklerle geçin. Yapılacak en basit şey Asgari Kurulum
kurulumunu seçmektir, bu da bir SSH sunucu kurar.
Root parolasını ayarlayın¶
Kurulum sırasında, sorulduğunda root parolasını ayarlamayı unutmayın.
CD-ROM’u ayırın ve yeniden başlatın¶
Kurulum bitene kadar bekleyin.

virsh komutunu kullanarak bir diski çıkarmak için, libvirt CD-ROM’un daha önce bağlı olduğu aynı hedefe boş bir disk eklemenizi gerektirir, bu hda
olabilir. Uygun hedefi virsh dumpxml vm-image komutuyla doğrulayabilirsiniz.
# virsh dumpxml centos
<domain type='kvm' id='19'>
<name>centos</name>
...
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
...
</domain>
Sunucudan aşağıdaki komutları çalıştırarak diski çıkartın ve root olarak virsh
kullanarak yeniden başlatın. virt-manager
kullanıyorsanız yukardaki komutlar çalışacaktır, ama ayrıca GUI kullanarak da ayırma ve yeniden başlatmayı elle durdurup başlatarak yapabilirsiniz.
# virsh attach-disk --type cdrom --mode readonly centos "" hda
# virsh reboot centos
ACPI sunucusunu kurun¶
Hipervizörün bir sunucuyu yeniden başlatabilmesi ya da kapatabilmesi için, acpid
sunucusunu misafir sistemde kurmalı ve çalıştırmalısınız.
CentOS misafirine root olarak giriş yapın ve ACPI servisini kurup sistem ön yüklenirken başlayacak şekilde yapılandırmak için aşağıdaki komutları çalıştırın:
# yum install acpid
# systemctl enable acpid
Metaveri getirmek için yapılandırın¶
Bir sunucu başlarken çeşitli görevleri tamamlayabilmek için metaveri servisiyle iletişime geçebilmelidir. Örneğin sunucu ssh açık anahtarını almalı ve kullanıcı veri betiğini çalıştırmalıdır. Sunucunun bu görevleri yaptığından emin olmak için, şu yöntemlerden birini kullanın:
Ubuntu cloud-init paketinin türevi olan bir
cloud-init
RPM’i kurun. Bu tavsiye edilen yaklaşımdır.Sonraki kısımda açıklandığı şekilde
/etc/rc.local
dosyasını değiştirip istenen bilgiyi metaveri servisinden çekin.
cloud-init kullanarak açık anahtarı çekin¶
cloud-init
paketi açık anahtarı otomatik olarak metaveri sunucusundan çeker ve anahtarı bir hesaba yerleştirir. Şu komutu çalıştırarak CentOS misafiri içinde cloud-init
kurun:
# yum install cloud-init
Hesap dağıtımdan dağıtıma değişir. CentOS tabanlı sanal makinelerde, hesap ismi ``centos``dur.
cloud-init
tarafıdan kullanılan hesap ismini /etc/cloud/cloud.cfg
dosyasını düzenleyerek farklı kullanıcı içeren bir satır ekleyerek değiştirebilirsiniz. Örneğin, cloud-init``i ``admin
isimli bir hesaba anahtar koyacak şekilde yapılandırmak için , yapılandırma dosyasında aşağıdaki sözdizimini kullanın.
users:
- name: admin
(...)
Bölümlerin yeniden boyutlandırılmasına izin vermek için cloud-utils-growpart kurun¶
Kök bölümün düzgün yeniden boyutlandırılması için, cloud-utils-growpart
paketini kurun, bu paket cloud-init kullanarak diskin yeniden boyutlandırılmasını sağlayan uygun araçları içerir.
# yum install cloud-utils-growpart
Açık anahtarı getirecek bir betik yazın (cloud-init yoksa)¶
İmajınıza cloud-init
paketini kuramıyorsanız, ssh açık anahtarını çekmek ve root hesabına eklemek için, /etc/rc.d/rc.local
dosyasını düzenleyin ve touch /var/lock/subsys/local
satırıdan önce şu satırları girin:
if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \
> /tmp/metadata-key 2>/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
fi
done
Not
Bazı VNC istemcileri iki noktayı (:
) noktalı virgül ile (;
) ve alt çizgiyi (_
) tire ile (-
) değiştirir. http;
değil http:
belirttiğinize emin olun. authorized-keys
değil authorized_keys
belirttiğinize emin olun.
Not
Önceki betik yalnızca ssh açık anahtarını metaveri sunucusundan alır. Kullanıcı verisini almaz, bu kullanıcı tarafından yeni bir sunucu istenirken geçirilebilecek isteğe bağlı veridir. Kullanıcı verisi genellikle sunucu ön yüklenirken çalıştırılacak özel bir betik için kullanılır.
OpenStack metaveri servisi Amazon EC2 metaveri servisinin 2009-04-04 sürümüyle uyumlu olduğundan, kullanıcı verisinin nasıl alınacağıyla ilgili bilgi için Sunucu Metaverisinin Kullanımı adresindeki Amazon EC2 belgelendirmesine danışın.
Zeroconf rotasını kapatın¶
Sununcunun metaveri servisine erişebilmesi için, öntanımlı zeroconf rotasını kapatmalısınız:
# echo "NOZEROCONF=yes" >> /etc/sysconfig/network
Konsolu yapılandırın¶
nova console-log komutunun CentOS 7’de düzgün çalışması için, aşağıdaki adımları tamamlamanız gerekebilir:
/etc/default/grub
dosyasını düzenleyin veGRUB_CMDLINE_LINUX
seçeneğini yapılandırın.rhgb quiet
yi silin ve seçeneğeconsole=tty0 console=ttyS0,115200n8
ekleyin.Örneğin:
... GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8"
Değişiklikleri kaydetmek için aşağıdaki komutu çalıştırın:
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.14.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.14.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.4.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-605f01abef434fb98dd1309e774b72ba Found initrd image: /boot/initramfs-0-rescue-605f01abef434fb98dd1309e774b72ba.img done
Sunucuyu kapatın¶
Sunucu içinden, root olarak şunu çalıştırın:
# poweroff
Temizlik (MAC adres ayrıntılarını kaldır)¶
İşletim sistemi sunucu sürecinde sanal Ethernet kartının MAC adresini /etc/sysconfig/network-scripts/ifcfg-eth0
gibi konumlarda kaydeder. Ancak imaj her ön yüklendiğinde, sanal Ethernet kartı farklı MAC adresine sahip olacaktır, yani bu bilgi yapılandırma dosyasından silinmelidir.
Mac adresi referanslarının silinmesi gibi çeşitli temizlik işlerini yapan virt-sysprep adlı bir araç bulunur. Bir sanal makine imajını yerinde temizler:
# virt-sysprep -d centos
libvirt alanı tanımını kaldır¶
Artık imajı İmaj servisine yükleyebileceğinize göre, bu sanal makine imajını libvirt tarafından yönetme ihtiyacınız kalmadı. libvirt’i bilgilendirmek için virsh undefine vm-image komutunu kullanın:
# virsh undefine centos
İmaj tamamlandı¶
qemu-img create komutuyla oluşturduğunuz temel imaj dosyası yüklenmek için hazır. Örneğin openstack image create komutunu kullanarak /tmp/centos.qcow2
imajını İmaj servisine yükleyebilirsiniz. Daha fazla bilgi için, python-openstackclient komut listesine göz atın.