Menyelam lebih dalam ke cloud-init

Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel

Untuk mempelajari lebih lanjut tentang cloud-init atau memecahkan masalahnya pada tingkat yang lebih dalam, Anda perlu memahami cara kerjanya. Dokumen ini menyoroti bagian-bagian penting, dan menjelaskan spesifik Azure.

Ketika cloud-init disertakan dalam gambar umum dan VM dibuat dari gambar tersebut, VM memproses konfigurasi dan berjalan melalui lima tahap selama boot awal. Tahapan ini menunjukkan kepada Anda pada titik apa cloud-init menerapkan konfigurasinya.

Memahami konfigurasi Cloud-Init

Mengonfigurasi VM untuk dijalankan pada platform menggunakan cloud-init untuk menerapkan beberapa konfigurasi. Konfigurasi utama yang berinteraksi dengan Anda adalah User data (customData), yang mendukung beberapa format. Untuk informasi lebih lanjut, lihat Dokumentasi Format Data Pengguna & cloud-init 21.2. Anda juga memiliki kemampuan untuk menambahkan dan menjalankan skrip (/var/lib/cloud/scripts) untuk konfigurasi lain.

Gambar Marketplace Azure yang telah dikonfigurasi sebelumnya

Beberapa konfigurasi sudah dipanggang ke dalam gambar Marketplace Azure yang dilengkapi dengan cloud-init.

  • Sumber data cloud - cloud-init berisi kode yang dapat berinteraksi dengan platform cloud, kode ini disebut 'sumber data'. Saat VM dibuat dari gambar cloud-init di Azure, cloud-init memuat sumber data Azure, yang berinteraksi dengan titik akhir metadata Azure untuk mendapatkan konfigurasi spesifik VM.

  • Konfigurasi runtime (/run/cloud-init).

  • Konfigurasi gambar (/etc/cloud), seperti /etc/cloud/cloud.cfg, /etc/cloud/cloud.cfg.d/*.cfg. Contoh di mana konfigurasi ini digunakan di Azure, adalah umum bagi gambar OS Linux dengan cloud-init untuk memiliki arahan sumber data Azure yang memberi tahu cloud-init sumber data apa yang harus digunakan, konfigurasi ini menghemat waktu cloud-init:

    sudo cat /etc/cloud/cloud.cfg.d/90_dpkg.cfg
    
    # to update this file, run dpkg-reconfigure cloud-init
    datasource_list: [ Azure ]
    

Tahapan boot cloud-init (konfigurasi pemrosesan)

Saat Anda menyediakan VM dengan cloud-init, ada lima tahap boot konfigurasi. Output dari tahap ini terlihat di log.

  1. Tahap Generator: Generator systemd cloud-init dimulai, dan menentukan bahwa cloud-init harus dimasukkan dalam tujuan boot, dan jika demikian, itu mengaktifkan cloud-init.

  2. Tahap Lokal Cloud-init: Di sini, cloud-init mencari sumber data "Azure" lokal, yang memungkinkan cloud-init untuk berinteraksi dengan Azure, dan menerapkan konfigurasi jaringan, termasuk fallback.

  3. Tahap init Cloud-init (Jaringan): Jaringan harus online, dan NIC serta informasi tabel rute harus dihasilkan. Pada tahap ini, modul yang tercantum di cloud_init_modules/etc/cloud/cloud.cfg dijalankan. VM di Azure dipasang, disk ephemeral diformat, nama host diatur, bersama dengan tugas lain.

    Berikut ini adalah beberapa dari cloud_init_modules:

    - migrator
    - seed_random
    - bootcmd
    - write-files
    - growpart
    - resizefs
    - disk_setup
    - mounts
    - set_hostname
    - update_hostname
    - ssh
    

    Setelah tahap ini, cloud-init mengirimkan sinyal ke platform Azure bahwa VM telah berhasil disediakan. Beberapa modul mungkin gagal, namun tidak semua kegagalan modul secara otomatis mengakibatkan kegagalan provisi.

  4. Tahap Konfigurasi Cloud-init: Pada tahap ini, modul dalam cloud_config_modules yang ditentukan dan tercantum dalam /etc/cloud/cloudeksekusi .cfg.

  5. Tahap Akhir Cloud-init: Pada tahap akhir ini, modul di cloud_final_modules, tercantum dalam /etc/cloud/cloud.cfg, berjalan. Di sini modul yang perlu dijalankan terlambat dalam eksekusi proses boot, seperti penginstalan paket dan eksekusi skrip dll.

    • Selama tahap ini, Anda dapat menjalankan skrip dengan menempatkannya di direktori di bawah /var/lib/cloud/scripts:
      • per-boot - skrip dalam direktori ini, berjalan pada setiap boot ulang
      • per-instance - skrip dalam direktori ini berjalan ketika instans baru pertama kali di-boot
      • per-once - skrip dalam direktori ini hanya berjalan sekali

Langkah berikutnya

Pemecahan masalah cloud-init.