Inisi Awan

Cloud-Init dan VM

Cloud-Init dan VM
Artikel berikut berbicara sedikit tentang cloud-init dan masalah yang dimilikinya, dan bagaimana open source tidak selalu berarti kebebasan. Jika Anda ingin menggunakan cloud-init untuk mengkonfigurasi cloud-images, gulir ke bawah ke poin nomor 3.

1. Apa fungsinya??

Pernah bertanya-tanya bagaimana penyedia VPS mengonfigurasi VM Anda, menambahkan kunci SSH Anda, membuat pengguna, dan menginstal paket setiap kali Anda menjalankan VM baru di 'cloud'? Jawaban untuk sebagian besar vendor adalah cloud-init. Sebagian besar OS dan distribusi mengirimkan image disk virtual dengan masing-masing OS terpasang di image. Instalasi sangat minim dan dapat berfungsi sebagai template untuk sistem file root OS. Pengelola OS juga cukup baik untuk menyediakan gambar disk virtual untuk semua berbagai format dari gambar disk mentah hingga qcow2 dan bahkan vmdk, vdi dan vhd.

Gambar juga memiliki satu paket tambahan yang sudah diinstal sebelumnya dan itu adalah cloud-init. Ini adalah tugas cloud-init untuk inisialisasi VM (biasanya dalam layanan cloud hosting seperti DigitalOcean, AWS atau Azure) berbicara dengan penyedia hosting sumber data dan dapatkan informasi konfigurasi yang kemudian digunakan untuk mengonfigurasi VM.

Informasi konfigurasi dapat mencakup: data pengguna seperti kunci SSH, nama host instance, pengguna dan kata sandi bersama dengan perintah arbitrer lainnya yang ingin dijalankan pengguna.

2. Masalah dengan Cloud-Init

Cloud-init adalah alat yang hebat jika Anda adalah pengguna cloud, jika Anda menjalankan VM atau wadah dan penyedia cloud Anda cukup baik untuk meminta Anda untuk konfigurasi cloud, itu bagus! Dengan file cloud-config alias data pengguna Anda, Anda dapat menambahkan pengguna, menjalankan perintah arbitrer, menginstal paket tepat saat VM sedang dibuat. Prosesnya dapat diulang berulang-ulang tanpa mengetik perintah yang membosankan berulang-ulang. Segera Anda memiliki armada VM, semuanya dengan konfigurasi yang identik identical.

Namun, jika Anda menggali lebih dalam dan melihat bagaimana sosis dibuat, Anda akan mulai mempertanyakan beberapa aspek cloud-init. Misalnya, secara default, sumber data seperti titik akhir REST, dan ini pada dasarnya di-hardcode ke dalam paket cloud-init itu sendiri. Tentu, Anda dapat menyiapkan sumber data sendiri, tetapi prosesnya sulit dan memakan waktu. Dokumentasi untuk melakukan ini sama sekali tidak ada.

Dokumentasi resmi tidak lain adalah panduan pengguna untuk pengguna akhir yang mengandalkan layanan cloud yang sudah ada sebelumnya. Itu tidak memberi tahu Anda bagaimana Anda dapat mengatur sumber data cloud-init Anda sendiri, jika Anda adalah vendor yang akan datang. Bahkan dokumentasi pengguna akhir buruk, dan saya akan merekomendasikan orang-orang yang menggunakan tutorial luar biasa DigitalOcean sebagai gantinya.

Lebih buruk lagi, pengguna dengan lab virtualisasi rumah dan startup VPS kecil merasa sulit untuk mendapatkan manfaat dari cloud-image yang ringan itu. Anda tidak dapat benar-benar memulai VM dari template tersebut tanpa sumber data cloud-init atau peretasan yang sulit untuk diotomatisasi dan diskalakan. Dengan kata lain, Anda bahkan tidak dapat memilih untuk mengabaikan cloud-init kecuali Anda ingin membuat template Anda sendiri.

Dalam mode systemd klasik, ia melepaskan diri dari peran yang telah ditentukan sebelumnya dan mulai mengacaukan jaringan dan bagian lain dari OS yang membuat pengguna keluar. Itu dibundel dalam Ubuntu 18.04 server ISO yang sama sekali tidak masuk akal (setidaknya tidak bagi saya).

3. Solusi Untuk Lab Rumah

Selain mengomel, saya masih harus berurusan dengan cloud-init dalam penggunaan sehari-hari saya. Saya memiliki instalasi Debian 9 yang sangat minim pada perangkat keras x86_64, yang saya gunakan sebagai hypervisor KVM. Saya benar-benar ingin menggunakan gambar disk qcow2 yang dikirimkan oleh Ubuntu dan CentOS. Gambar disk ini memiliki OS yang sudah diinstal di dalamnya, dan untuk menggunakannya Anda hanya perlu:

  1. Salin sebagai gambar hard disk virtual VM Anda.
  2. Ubah ukuran ukuran virtual sistem file root ke ukuran yang Anda inginkan (disarankan setidaknya 10GB). Ini tidak akan meningkatkan ukuran fisik VM Anda, tetapi disk image dapat bertambah seiring waktu karena VM menambahkan lebih banyak data ke dalamnya.
  3. Konfigurasikan VM menggunakan cloud-init. Persyaratan minimum adalah mengatur kata sandi pengguna root atau kunci SSH, tetapi Anda dapat melakukan hampir semua hal yang dapat dilakukan cloud-init.

Langkah-langkah berikut diikuti:

  1. Unduh gambar cloud dari OS favorit Anda dan simpan di direktori /var/lib/libvirt/boot:
$cd /var/lib/libvirt/boot
$ curl -O https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-
amd64-disk1.gambar
$ cd /var/lib/libvirt/images
  1. Buat hard disk virtual kosong dengan ukuran yang Anda inginkan dan perluas gambar qcow2 yang diunduh ke dalamnya. Saya suka menyimpan hard disk VM di direktori /var/lib/libvirt/images/, Anda dapat memilih direktori yang berbeda. Apa pun yang Anda pilih, jalankan perintah di bawah ini di direktori yang sama:
$ qemu-img create -f qcow2 myVM.qcow2 8G ## Buat harddisk dengan
ukuran disk virtual 8GB
$ virt-resize --expand /dev/sda1 /var/lib/libvirt/boot/xenial-server-
cloudimg-amd64-disk1.gambar
./myVM.qcow2
  1. Buat file cloud-init. Ini adalah file data pengguna dan meta-data:
$ vim meta-data
contoh-id: myVM
nama host lokal: myVM

$ vim data pengguna
#cloud-config
pengguna:
- nama: akar
chpasswd:
daftar: |
root: kata sandi saya
kedaluwarsa: Salah

Satu-satunya pengguna yang saya miliki di sini adalah pengguna root. Jika Anda tidak menyebutkan pengguna mana pun, maka pengguna default dengan nama ubuntu dibuat. Nama pengguna default, berbeda dari satu OS ke OS lainnya, itulah sebabnya saya menyarankan untuk menentukan pengguna, meskipun hanya akar. Bagian selanjutnya dari file data pengguna memberi tahu cloud-init untuk mengonfigurasi kata sandi untuk semua pengguna yang ingin Anda tetapkan kata sandinya. Sekali lagi, saya hanya mengatur kata sandi untuk pengguna root saja, dan itu kata sandi saya. Pastikan tidak ada spasi antara titik dua dan string kata sandi.

Lebih baik lagi, Anda dapat menggunakan kunci SSH alih-alih memasang kata sandi yang di-hardcode.

$ vim data pengguna
#cloud-config
pengguna:
- nama: akar
ssh_pwauth: Benar
ssh_authorized_keys:
- ssh-rsa
  1. Sematkan file data pengguna dan meta-data ke dalam iso.
$ genisoimage -output cidata-myVM.iso -volid cidata -joliet -rock user-data meta-data

Pastikan file cidata-myVM.iso terletak di /var/lib/libvirt/images/

  1. Buka direktori /var/lib/libvirt/images dan inisialisasi VM dengan perintah virt-install: $ virt-install --import --name myVM --memory 2048 --vcpus 2 --cpu host
    --disk myVM.qcow2,format=qcow2,bus=virtio --disk myVM-cidata.iso,perangkat=cdrom
    --jembatan jaringan=virbr0,model=virtio --os-type=linux
    --os-varian=ubuntu16.04 --noautoconsole

    Anda sekarang dapat mencoba masuk ke VM dengan menggunakan perintah virsh console myVM dan menggunakan nama pengguna root dan kata sandi yang sesuai untuk masuk. Untuk keluar dari konsol, cukup ketik Ctrl+]

Kesimpulan

Gambar awan yang dikirimkan sebagian besar vendor sangat efisien dalam hal pemanfaatan sumber daya dan juga terasa sangat cepat dan responsif. Fakta bahwa kita perlu menangani konfigurasi cloud-init yang canggung sebagai titik awal hanya menghalangi adopsi komunitas terhadap KVM dan teknologi terkait.

Komunitas dapat belajar banyak dari cara Docker membangun dan mengirimkan gambarnya. Mereka sangat mudah dikelola baik sebagai wadah yang berjalan maupun template yang mudah didistribusikan dan digunakan.z

Vulkan untuk Pengguna Linux
Dengan setiap generasi baru kartu grafis, kami melihat pengembang game mendorong batas kesetiaan grafis dan selangkah lebih dekat ke fotorealisme. Tet...
OpenTTD vs Simutrans
Membuat simulasi transportasi Anda sendiri bisa menyenangkan, santai, dan sangat menarik. Itulah mengapa Anda perlu memastikan bahwa Anda mencoba game...
Tutorial OpenTTD
OpenTTD adalah salah satu game simulasi bisnis paling populer di luar sana. Dalam game ini, Anda perlu membuat bisnis transportasi yang luar biasa. Na...