Contoh: image CentOS

Contoh ini menunjukkan Anda bagaimana untuk menginstal image CentOS dan berfokus terutama pada CentOS 7. Karena proses instalasi CentOS mungkin berbeda di berbagai versi, langkah instalasi mungkin berbeda jika Anda menggunakan versi yang berbeda dari CentOS.

Download sebuah file ISO install CentOS

  1. Arahkan ke halaman CentOS mirrors.

  2. Klik salah satu link HTTP di kolom right-hand di sebelah salah satu mirrors.

  3. Klik link folder dari versi CentOS dimana Anda ingin gunakan. Misalnya, 7/.

  4. Klik link folder isos/

  5. Klik link folder x86_64/ untuk image 64-bit.

  6. Klik netinstall ISO image yang ingin anda download. Misalnya, CentOS-7-x86_64-NetInstall-1611.iso adalah pilihan yang baik karena ini adalah gambar yang lebih kecil yang mendownload paket hilang dari Internet saat penginstalan.

Memulai proses instalasi

Mulai proses instalasi dengan perintah virt-manager ataupun virt-install seperti yang dijelaskan sebelumnya. Jika Anda menggunakan perintah virt-install, jangan lupa hubungkan klien VNC Anda ke mesin virtual.

Asumsikan bahwa:

  • Nama image mesin virtual Anda adalah centos; Anda perlu nama ini ketika Anda menggunakan perintah :command: virsh untuk memanipulasi keadaan image.

  • Anda menyimpan image ISO netinstall ke direktori /data/isos.

Jika Anda menggunakan perintah :command: virt-install, perintah harus terlihat seperti ini:

# 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

Langkah keseluruhan instalasi

Pada menu Installer boot awal, pilih opsi Install CentOS 7. Setelah program penginstalan dimulai, pilih bahasa pilihan Anda dan klik :guilabel: Continue untuk sampai ke ringkasan instalasi. Terima default

_images/centos-install.png

Ubah status Ethernet

Pengaturan Ethernet standar adalah OFF. Ubah pengaturan dari keadaan Ethernet OFF ke ON. Secara khusus, pastikan bahwa IPv4 Settings' Method adalah Automatic (DHCP), yang merupakan default.

_images/centos-tcpip.png

Hostname

Installer memungkinkan Anda memilih nama host. Default (localhost.localdomain) baik-baik saja. Anda menginstal paket cloud-init nanti, yang menetapkan nama host saat boot saat instance baru disiapkan menggunakan image ini.

Arahkan installer ke web server CentOS

Tergantung pada versi CentOS, installer bersih mengharuskan pengguna untuk menentukan URL atau situs web dan direktori CentOS yang sesuai dengan salah satu mirror CentOS. Jika installer meminta URL tunggal, URL yang valid mungkin ada di http://mirror.umd.edu/centos/7/os/x86_64.

Catatan

Pertimbangkan untuk menggunakan mirror lainnya sebagai alternatif untuk mirror.umd.edu.

_images/centos-url-setup.png

Jika installer meminta nama situs web dan direktori CentOS secara terpisah, Anda dapat memasukkan:

  • Nama situs web: mirror.umd.edu

  • Direktori CentOS: centos/7/os/x86_64

Lihat CentOS mirror page untuk mendapatkan daftar mirror penuh, klik pada link mirror HTTP untuk mengambil nama situs web untuk mirror.

Perangkat penyimpanan

Jika diminta tentang tipe perangkat yang digunakan instalasimu, pilih Virtio Block Device.

Partisi disk

Ada beberapa pilihan untuk partisi disk. Instalasi default menggunakan partisi LVM, dan menciptakan tiga partisi (/boot, /, swap), yang bekerja dengan baik. Atau, Anda mungkin ingin membuat partisi ext4 tunggal yang dipasang untuk ``/ ``, yang juga bekerja dengan baik.

Jika tidak yakin, gunakan skema partisi default untuk installer. Meskipun tidak ada skema secara inheren lebih baik dari yang lain, pemilikan partisi dimana Anda ingin tumbuh secara dinamis pada akhir daftar akan memungkinkan untuk tumbuh tanpa melintasi batas partisi lainnya.

Pilih opsi instalasi

Lakukan sekuruh langkah instalasi, gunakan opsi default. Hal paling sederhana untuk dilakukan adalah memilih instal Minimal Install, yang menginstal server SSH.

Tetapkan kata sandinya

Selama instalasi, ingatlah untuk mengatur password root saat diminta.

Lepaskan CD-ROM dan reboot

Tunggu sampai penginstalan selesai.

_images/centos-complete.png

Untuk mengeluarkan disk dengan menggunakan perintah virsh, libvirt mengharuskan Anda memasang disk kosong pada target yang sama dengan CD-ROM yang sebelumnya terpasang, yang mungkin adalah hda. Anda bisa mengkonfirmasi target yang sesuai dengan perintah virsh dumpxml vm-image.

# 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>

Jalankan perintah berikut dari host untuk mengeluarkan disk dan reboot menggunakan virsh, sebagai root. Jika Anda menggunakan virt-manager, perintah di bawah ini akan bekerja, tetapi Anda juga dapat menggunakan GUI untuk melepaskan dan reboot dengan menghentikan dan memulai secara manual.

# virsh attach-disk --type cdrom --mode readonly centos "" hda
# virsh reboot centos

Menginstal layanan ACPI

Untuk mengaktifkan hypervisor untuk reboot atau shutdown suatu instance, Anda harus menginstal dan menjalankan layanan acpid pada sistem guest.

Masuk sebagai root ke CentOS guest dan jalankan perintah berikut untuk menginstal layanan ACPI dan konfigurasikan untuk memulai saat sistem boot:

# yum install acpid
# systemctl enable acpid

Konfigurasi untuk mengambil metadata

Sebuah instance harus berinteraksi dengan layanan metadata untuk melakukan beberapa tugas pada start up. Misalnya, instance harus mendapatkan ssh public key dan menjalankan skrip data pengguna. Untuk memastikan bahwa instance melakukan tugas ini, gunakan salah satu metode ini:

  • Instal RPM cloud-init, yang merupakan port dari Ubuntu paket cloud-init. Ini adalah pendekatan yang direkomendasikan.

  • Modifikasi file /etc/rc.local untuk mengambil informasi yang diinginkan dari layanan metadata, seperti yang akan dijelaskan di bagian selanjutnya.

Gunakan cloud-init untuk mengambil kunci publik (public key).

Paket cloud-init secara otomatis mengambil kunci publik dari server metadata dan menempatkan kunci di akun. Install cloud-init di dalam CentOS guest dengan menjalankan:

# yum install cloud-init

Akunnya bervariasi menurut distribusi. Pada mesin virtual berbasis CentOS, akun tersebut disebut centos.

Anda dapat mengubah nama akun yang digunakan oleh cloud-init dengan mengedit file /etc/cloud/cloud.cfg dan menambahkan sebuah baris dengan pengguna yang berbeda. Misalnya, untuk mengkonfigurasi cloud-init untuk meletakkan kunci di akun bernama admin, gunakan sintaks berikut di file konfigurasi:

users:
  - name: admin
    (...)

Instal cloud-utils-growpart untuk memungkinkan partisi untuk mengubah ukuran

Agar partisi root dapat disesuaikan dengan benar, pasang paket cloud-utils-growpart, yang berisi alat yang tepat agar disk dapat diubah ukurannya menggunakan cloud-init.

# yum install cloud-utils-growpart

Tulis skrip untuk mengambil kunci publik (jika tidak ada cloud-init)

Jika Anda tidak dapat menginstal paket cloud-init dalam image Anda, mengambil ssh kunci publik dan menambahkannya ke akun root, edit file /etc/rc.d/rc.local dan tambahkan baris berikut sebelum baris touch /var/lock/subsys/local:

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

Catatan

Beberapa klien VNC menggantikan colon (:) dengan semicolon (;) dan underscore (_) dengan hyphen (-). Pastikan untuk menentukan http: dan bukan http;. Pastikan untuk menentukan authorized_keys dan bukan authorized-keys.

Catatan

Skrip sebelumnya hanya mendapatkan ssh public key dari server metadata. Tidak mendapatkan data pengguna, yang merupakan data opsional yang dapat dilalui oleh pengguna ketika meminta instance baru. Data pengguna sering digunakan untuk menjalankan skrip khusus ketika sebuah instance melakukan boot.

Sebagai layanan OpenStack metadata menjadi kompatibel dengan versi 2009/04/04 layanan metadata Amazon EC2, cari keterangan dokumentasi Amazon EC2 di Using Instance Metadata untuk rincian tentang bagaimana mendapatkan data pengguna.

Nonaktifkan rute zeroconf

Supaya instance dapat mengakses layanan metadata, Anda harus menonaktifkan rute zeroconf default:

# echo "NOZEROCONF=yes" >> /etc/sysconfig/network

Mengkonfigurasi konsol

Untuk perintah :command: nova console-log untuk bekerja dengan baik di CentOS 7, Anda mungkin perlu melakukan langkah-langkah berikut:

  1. Edit file /etc/default/grub dan konfigurasi opsi GRUB_CMDLINE_LINUX. Hapus rhgb quiet dan tambah console=tty0 console=ttyS0,115200n8 ke opsi.

    Sebagai contoh:

    ...
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8"
    
  2. Jalankan perintah berikut untuk menyimpan perubahan:

    # 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
    

Matikan instance

Dari dalam instance, jalankan sebagai root:

# poweroff

Bersihkan (hapus detail alamat MAC)

Sistem operasi mencatat alamat MAC dari kartu Ethernet virtual di lokasi seperti /etc/sysconfig/network-scripts/ifcfg-eth0 selama proses instance. Namun, setiap kali image boot up, kartu Ethernet virtual akan memiliki alamat MAC yang berbeda, jadi informasi ini harus dihapus dari file konfigurasi.

Ada utilitas yang disebut virt-sysprep, yang melakukan berbagai tugas pembersihan seperti menghapus referensi alamat MAC. Utilitas Ini akan membersihkan image mesin virtual di tempat:

# virt-sysprep -d centos

Tak ada penetapan domain libvirt

Sekarang Anda dapat meng-upload image ke layanan Image, Anda tidak lagi perlu memiliki image mesin virtual ini yang dikelola oleh libvirt. Gunakan perintah virsh undefine vm-image untuk menginformasikan libvirt:

# virsh undefine centos

Image lengkap

File gambar yang mendasari yang Anda buat dengan perintah qemu-img create siap di upload. Misalnya, Anda bisa mengupload image /tmp/centos.qcow2 ke layanan Image dengan menggunakan perintah openstack image create. Untuk informasi lebih lanjut, lihat python-openstackclient command list.