Saat Anda meluncurkan sebuah mesin virtual baru di penyedia layanan cloud, server tersebut biasanya hadir dalam kondisi dasar. Sistem operasi telah terpasang, tetapi belum ada pengguna tambahan, paket aplikasi, atau konfigurasi jaringan khusus yang disiapkan. Secara tradisional, administrator harus masuk secara manual melalui SSH dan menjalankan serangkaian perintah satu per satu. Proses ini memakan waktu dan sangat rentan terhadap kesalahan manusia, terutama jika Anda perlu menyiapkan puluhan atau ratusan server sekaligus. Di sinilah cloud-init berperan penting.
Cloud-init adalah alat standar industri yang dirancang khusus untuk menangani otomatisasi konfigurasi awal (initialization) pada instance cloud. Alat ini berjalan secara otomatis saat sistem operasi melakukan proses booting untuk pertama kalinya, membaca instruksi yang diberikan oleh pengguna atau platform cloud, lalu menerapkan seluruh konfigurasi tersebut sebelum server benar-benar siap menerima koneksi dari luar.
Apa Itu Cloud-init dan Bagaimana Cara Kerjanya?
Pada dasarnya, cloud-init adalah sekumpulan skrip Python yang dieksekusi pada fase awal siklus hidup mesin virtual. Ketika sebuah instance dinyalakan, cloud-init akan mencari sumber data (datasource). Sumber data ini bisa berupa metadata dari penyedia cloud seperti AWS, DigitalOcean, atau GCP, bisa juga berupa file konfigurasi lokal, atau bahkan drive CD-ROM virtual yang disisipkan ke dalam mesin virtual.
Setelah menemukan sumber data, cloud-init akan mengekstrak informasi yang diperlukan dan mulai menjalankan berbagai modul secara berurutan. Modul-modul ini bertanggung jawab atas tugas-tugas spesifik, seperti mengatur nama host, membuat pengguna baru, menyuntikkan kunci publik SSH, memasang partisi disk tambahan, hingga menginstal paket perangkat lunak melalui manajer paket bawaan sistem operasi.
Keseluruhan proses ini dibagi ke dalam beberapa tahap utama agar eksekusinya tetap teratur:
- Tahap Generator: Berjalan sangat awal saat sistem boot, bertugas menentukan datasource mana yang akan digunakan berdasarkan lingkungan tempat instance berjalan.
- Tahap Local: Mengonfigurasi hal-hal fundamental seperti jaringan dasar agar instance dapat berkomunikasi dengan layanan metadata cloud.
- Tahap Network: Berjalan setelah jaringan aktif, menangani konfigurasi yang membutuhkan koneksi internet seperti pengunduhan paket atau pembaruan sistem.
- Tahap Config dan Final: Menjalankan modul konfigurasi tingkat lanjut seperti penulisan file, eksekusi skrip kustom, dan pengiriman pesan bahwa proses booting telah selesai sepenuhnya.
Format Konfigurasi yang Didukung
Untuk memberikan instruksi kepada cloud-init, Anda perlu menulis konfigurasi yang umumnya disalurkan melalui fitur user-data pada panel kontrol penyedia cloud. Ada dua format utama yang paling sering digunakan dalam praktik sehari-hari.

Cloud Config (Format YAML)
Ini adalah format yang paling populer dan mudah dibaca oleh manusia. File YAML ini harus selalu diawali dengan baris #cloud-config agar cloud-init mengenalinya sebagai direktif konfigurasi, bukan sekadar skrip biasa. Melalui format ini, Anda dapat mendeklarasikan apa yang ingin dicapai tanpa perlu memikirkan urutan perintah secara detail.
#cloud-config
users:
- name: adminweb
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...
packages:
- nginx
- certbot
runcmd:
- systemctl enable nginx
- systemctl start nginxPada contoh di atas, cloud-init akan secara otomatis membuat pengguna bernama adminweb, memberikan hak akses sudo tanpa kata sandi, memasukkan kunci SSH yang ditentukan, menginstal Nginx dan Certbot, lalu menjalankan perintah untuk mengaktifkan layanan web tersebut.
User-Data Script (Shell Script)
Jika Anda lebih nyaman menggunakan perintah terminal biasa, Anda bisa menuliskan skrip shell standar. Syarat mutlaknya, skrip ini harus diawali dengan shebang #!/bin/bash atau #!/bin/sh. Cloud-init akan menyimpan skrip ini sementara dan menjalankannya pada tahap akhir proses booting. Format ini cocok untuk logika otomatisasi yang kompleks dan membutuhkan percabangan kondisi yang sulit diwujudkan hanya dengan deklarasi YAML.
Menerapkan Cloud-init pada Infrastruktur Modern
Penerapan cloud-init sangat bergantung pada platform yang Anda gunakan. Pada penyedia Infrastructure-as-a-Service (IaaS) publik, Anda cukup menempelkan isi konfigurasi YAML atau skrip Anda ke kolom User Data atau Custom Data saat membuat instance baru melalui antarmuka web maupun antarmuka baris perintah (CLI).
Bagaimana jika Anda membangun infrastruktur sendiri secara lokal menggunakan Proxmox VE, KVM, atau VirtualBox? Anda tetap bisa memanfaatkan cloud-init dengan cara membuat file ISO khusus. File ISO ini bertindak sebagai datasource tipe NoCloud. Di dalam ISO tersebut, Anda perlu menyediakan setidaknya dua file kosong atau berisi data: meta-data (yang bisa dibiarkan kosong atau diisi identitas instance) dan user-data (yang berisi konfigurasi YAML atau skrip Anda). Saat mesin virtual dinyalakan dengan ISO ini terpasang sebagai drive optik, cloud-init di dalam sistem operasi tamu akan langsung membacanya dan mengeksekusi seluruh instruksi.
Pendekatan deklaratif melalui cloud-init ini sejalan dengan prinsip infrastruktur sebagai kode. Alih-alih mencatat langkah-langkah manual di dokumen wiki yang mudah usang, seluruh konfigurasi server tersimpan dalam bentuk teks yang bisa dimasukkan ke dalam sistem kontrol versi seperti Git. Jika server mengalami kerusakan fatal, Anda tidak perlu panik mengingat-ingat paket apa saja yang dulu diinstal; Anda cukup meluncurkan instance baru dengan konfigurasi user-data yang sama, dan server akan kembali ke keadaan yang identik dalam hitungan menit.
Batas Kemampuan dan Hal yang Perlu Diperhatikan
Meskipun sangat berguna, cloud-init memiliki batasan alami. Alat ini dirancang khusus untuk fase inisialisasi awal. Secara bawaan, cloud-init hanya berjalan penuh pada proses booting pertama. Jika Anda mengubah file user-data setelah instance berjalan dan kemudian me-restart server, cloud-init umumnya tidak akan mengulang seluruh proses konfigurasi kecuali Anda secara eksplisit membersihkannya atau memaksanya melalui parameter tertentu.

Selain itu, untuk tugas manajemen konfigurasi berkelanjutan—seperti memastikan layanan tetap berjalan, memperbarui versi aplikasi secara berkala, atau mengelola ratusan file konfigurasi yang dinamis—cloud-init bukanlah alat yang tepat. Dalam skenario tersebut, cloud-init sebaiknya hanya digunakan untuk menyiapkan fondasi dasar, seperti menginstal agen perangkat lunak manajemen konfigurasi lain yang akan mengambil alih tugas pemeliharaan jangka panjang.
Perlu diperhatikan juga bahwa karena cloud-init sering digunakan untuk menyuntikkan kunci SSH atau kredensial sensitif lainnya, pastikan saluran transmisi user-data di platform cloud Anda aman. Jangan pernah menyimpan file konfigurasi cloud-init yang berisi rahasia (secrets) di repositori publik.
Kesimpulan
Menggunakan cloud-init mengubah cara kita menyiapkan server dari proses manual yang repetitif menjadi alur kerja otomatis yang konsisten dan dapat direproduksi. Dengan memahami tahapan eksekusinya dan memilih format konfigurasi yang tepat, Anda dapat memangkas waktu persiapan infrastruktur secara drastis. Baik untuk proyek pribadi maupun skala perusahaan, penguasaan terhadap cloud-init merupakan keterampilan mendasar bagi siapa saja yang mengelola infrastruktur web modern.
PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba