Cloud Init

Cloud-Init dan VM

Cloud-Init dan VM
Artikel berikut membincangkan sedikit mengenai cloud-init dan masalahnya, dan bagaimana sumber terbuka tidak semestinya bermaksud kebebasan. Sekiranya anda ingin menggunakan cloud-init untuk mengkonfigurasi gambar awan, cukup tatal ke bawah ke titik nombor 3.

1. Apa ia lakukan?

Pernah terfikir bagaimana penyedia VPS mengkonfigurasi VM anda, menambah kunci SSH anda, membuat pengguna dan memasang pakej setiap kali anda membuat VM baru di 'cloud'? Nah, jawapan bagi kebanyakan vendor adalah cloud-init. Sebilangan besar OS dan pengedaran menghantar imej cakera maya dengan OS masing-masing dipasang dalam gambar. Pemasangannya sangat minimum dan boleh berfungsi sebagai templat untuk sistem fail root OS. Penyelenggara OS juga cukup baik untuk memberikan imej cakera maya untuk semua pelbagai format dari gambar cakera mentah hingga qcow2 dan bahkan vmdk, vdi dan vhd.

Gambar itu juga mempunyai satu pakej tambahan yang telah dipasang sebelumnya dan itu adalah cloud-init. Ini adalah tugas cloud-init untuk memulakan VM (biasanya dalam perkhidmatan hosting awan seperti DigitalOcean, AWS atau Azure) bercakap dengan penyedia hosting sumber data dan dapatkan maklumat konfigurasi yang kemudiannya digunakan untuk mengkonfigurasi VM.

Maklumat konfigurasi boleh merangkumi Data pengguna seperti kekunci SSH, nama host contoh, pengguna dan kata laluan bersama dengan arahan sewenang-wenang lain yang ingin dijalankan oleh pengguna.

2. Masalah dengan Cloud-Init

Cloud-init adalah alat yang hebat jika anda adalah pengguna cloud, jika anda menggunakan VM atau container dan penyedia cloud anda cukup baik untuk meminta konfigurasi cloud kepada anda, itu bagus! Dengan fail konfigurasi awan alias data pengguna anda, anda dapat menambahkan pengguna, menjalankan perintah sewenang-wenang, memasang pakej tepat ketika VM sedang dibuat. Prosesnya dapat diulang berulang-ulang tanpa perintah yang membosankan diketik berulang kali. Segera anda mempunyai armada VM, semuanya dengan konfigurasi yang sama.

Namun, jika anda menggali sedikit lebih dalam dan melihat bagaimana sosej dibuat, anda akan mula mempersoalkan beberapa aspek cloud-init. Sebagai contoh, secara lalai, sumber data seperti titik akhir REST, dan ini pada dasarnya dimasukkan ke dalam pakej cloud-init itu sendiri. Pasti, anda boleh menyiapkan sumber data sendiri, tetapi prosesnya sukar dan memerlukan masa. Dokumentasi untuk melakukan ini semuanya tidak ada.

Dokumentasi rasmi tidak lain hanyalah manual pengguna untuk pengguna akhir yang bergantung pada perkhidmatan awan yang sudah ada sebelumnya. Ini tidak memberitahu anda bagaimana anda boleh menyediakan sumber data cloud-init anda sendiri, sekiranya anda merupakan vendor yang akan datang. Malah dokumentasi pengguna akhir kurang baik, dan saya akan mengesyorkan orang menggunakan tutorial DigitalOcean yang sangat baik.

Untuk memburukkan lagi keadaan, pengguna dengan makmal virtualisasi rumah dan permulaan VPS kecil sukar mendapat manfaat daripada gambar awan ringan itu. Anda tidak boleh benar-benar memulakan VM dari templat tersebut tanpa sumber data cloud-init atau hacker yang sukar untuk automatik dan skala. Dengan kata lain, anda bahkan tidak boleh memilih untuk mengabaikan cloud-init melainkan jika anda ingin membuat templat anda sendiri.

Dengan cara sistem klasik, ia bebas dari peranannya yang telah ditentukan dan ia mula mengacaukan rangkaian dan bahagian lain dari OS yang melenyapkan pengguna. Ia dikumpulkan dalam Ubuntu 18.04 pelayan ISO yang sama sekali tidak masuk akal (sekurang-kurangnya tidak bagi saya).

3. Penyelesaian Untuk Makmal Rumah

Walau apa pun, saya masih perlu menangani cloud-init dalam penggunaan seharian saya. Saya mempunyai pemasangan Debian 9 yang sangat minimum pada perkakasan x86_64, yang saya gunakan sebagai penyelia KVM. Saya benar-benar mahu menggunakan imej cakera qcow2 yang dihantar oleh Ubuntu dan CentOS. Imej cakera ini mempunyai OS yang terpasang di dalamnya, dan untuk menggunakannya, anda hanya perlu:

  1. Salin gambar tersebut sebagai gambar cakera keras maya VM anda.
  2. Ubah saiz saiz maya sistem fail root ke ukuran yang anda mahukan (disarankan sekurang-kurangnya 10GB). Ini tidak akan meningkatkan ukuran fizikal VM anda tetapi imej cakera dapat bertambah dari masa ke masa kerana VM menambahkan lebih banyak data padanya.
  3. Konfigurasikan VM menggunakan cloud-init. Syarat minimum adalah menetapkan kata laluan pengguna root atau kunci SSH, tetapi anda boleh melakukan apa sahaja yang mampu dilakukan oleh cloud-init.

Langkah-langkah berikut diikuti:

  1. Muat turun gambar awan OS kegemaran anda dan simpan di direktori / var / lib / libvirt / boot:
$ cd / var / lib / libvirt / boot
$ curl -O https: // awan-gambar.ubuntu.com / xenial / current / xenial-server-cloudimg-
amd64-cakera1.img
$ cd / var / lib / libvirt / gambar
  1. Buat cakera keras maya kosong dengan ukuran yang anda mahukan dan kembangkan gambar qcow2 yang dimuat turun ke dalamnya. Saya suka menyimpan cakera keras VM di direktori / var / lib / libvirt / images /, anda boleh memilih direktori lain. Apa sahaja yang anda pilih, jalankan arahan di bawah dalam direktori yang sama:
$ qemu-img buat -f qcow2 myVM.qcow2 8G ## Buat cakera keras dengan
saiz cakera maya 8GB
$ virt-resize --expand / dev / sda1 / var / lib / libvirt / boot / xenial-server-
cloudimg-amd64-disk1.img
./ myVM.qcow2
  1. Buat fail cloud-init. Ini adalah fail data pengguna dan meta-data:
meta-data $ vim
instance-id: myVM
nama-host tempatan: myVM

$ pengguna data vim
# cloud-config
pengguna:
- nama: akar
chpasswd:
senarai: |
root: myPassword
luput: Salah

Satu-satunya pengguna yang saya ada di sini adalah pengguna root. Sekiranya anda tidak menyebut pengguna, pengguna lalai dengan nama ubuntu dicipta. Nama pengguna lalai, berbeza dari satu OS ke OS yang lain, itulah sebabnya saya mengesyorkan untuk menentukan pengguna, walaupun hanya akar. Bahagian seterusnya dari fail data pengguna memberitahu cloud-init untuk mengkonfigurasi kata laluan untuk semua pengguna yang ingin anda tetapkan kata laluan. Sekali lagi, saya hanya menetapkan kata laluan untuk pengguna root sahaja, dan memang begitu kata laluan saya. Pastikan bahawa tidak ada ruang antara titik dua dan rentetan kata laluan.

Lebih baik lagi, anda boleh menggunakan kekunci SSH dan bukannya meletakkan kata laluan berkod keras.

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

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

  1. Pergi ke direktori / var / lib / libvirt / images dan mulakan VM dengan perintah virt-install: $ virt-install --import --name myVM --memory 2048 --vcpus 2 --cpu host
    --cakera myVM.qcow2, format = qcow2, bas = virtio --disk myVM-cidata.iso, device = cdrom
    --jambatan rangkaian = virbr0, model = virtio --os-type = linux
    --varian os = ubuntu16.04 --noautoconsole

    Anda kini boleh mencuba log masuk ke VM dengan menggunakan arahan virsh console myVM dan menggunakan nama pengguna root dan kata laluannya yang sesuai untuk log masuk. Untuk keluar dari konsol, cukup ketik Ctrl +]

Kesimpulannya

Imej awan yang dihantar oleh kebanyakan vendor sangat cekap dari segi penggunaan sumber dan mereka juga berasa sangat pantas dan responsif. Fakta bahawa kita perlu menangani konfigurasi cloud-init yang canggung sebagai titik permulaan hanya menghalang penerapan masyarakat KVM dan teknologi yang berkaitan.

Komuniti dapat belajar banyak dari cara Docker membina dan menghantar gambarnya. Mereka betul-betul mudah diuruskan sebagai bekas dan templat yang mudah diedarkan dan digunakan.z

Cara membalikkan arah tatal Tetikus dan Pad Sentuh pada Windows 10
Tetikus dan Pad sentuhs bukan sahaja menjadikan pengkomputeran mudah, tetapi lebih cekap dan kurang memakan masa. Kami tidak dapat membayangkan kehidu...
Cara menukar saiz, warna & skema penunjuk dan kursor tetikus pada Windows 10
Penunjuk dan kursor tetikus di Windows 10 adalah aspek yang sangat penting dalam sistem operasi. Ini boleh dikatakan untuk sistem operasi lain juga, j...
Enjin Permainan Sumber Percuma dan Terbuka untuk Membangunkan Permainan Linux
Artikel ini akan merangkumi senarai enjin permainan sumber percuma dan terbuka yang dapat digunakan untuk mengembangkan permainan 2D dan 3D di Linux. ...