Ö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

  1. CentOS yansıları sayfasına gidin.

  2. Yansılardan birinin yanındaki sağ sütunlardan birindeki HTTP bağlantılarına tıklayın.

  3. Kullanmak istediğiniz CentOS sürümünün dizin bağlantısına tıklayın. Örneğin, 7/.

  4. isos/ dizin bağlantısına tıklayın.

  5. 64-bit imajlar için x86_64/ dizin bağlantısına tıklayın.

  6. İ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.

_images/centos-install.png

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.

_images/centos-tcpip.png

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.

_images/centos-url-setup.png

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.

_images/centos-complete.png

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:

  1. /etc/default/grub dosyasını düzenleyin ve GRUB_CMDLINE_LINUX seçeneğini yapılandırın. rhgb quiet yi silin ve seçeneğe console=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"
    
  2. 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.