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¶
Arahkan ke halaman CentOS mirrors.
Klik salah satu link
HTTP
di kolom right-hand di sebelah salah satu mirrors.Klik link folder dari versi CentOS dimana Anda ingin gunakan. Misalnya,
7/
.Klik link folder
isos/
Klik link folder
x86_64/
untuk image 64-bit.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
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.
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
.
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.
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:
Edit file
/etc/default/grub
dan konfigurasi opsiGRUB_CMDLINE_LINUX
. Hapusrhgb quiet
dan tambahconsole=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"
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.