virtualization:lxd:cloud-init

This is an old revision of the document!


Cloud-Init: Dokumentasi Umum

Cloud-init adalah tool standar industri untuk melakukan konfigurasi otomatis pada instance/VM/container saat pertama kali boot (first boot). Tool ini banyak dipakai di platform virtualisasi dan cloud seperti Incus, LXD, Proxmox, AWS, OpenStack, dll.

Dengan cloud-init, kita tidak perlu login manual ke setiap instance untuk:

  • Membuat user & set SSH key
  • Install package
  • Konfigurasi jaringan
  • Menjalankan command tertentu saat boot

Semua bisa disiapkan sebelum instance dinyalakan.

Cloud-init bekerja dengan 3 jenis konfigurasi:

Komponen Fungsi Diawali
User Data Konfigurasi spesifik per-instance (user, SSH key, sudo, hostname, package, command)
#cloud-config
Vendor Data Konfigurasi umum/default yang berlaku untuk semua instance (timezone, package standar)
#cloud-config
Network Config Konfigurasi jaringan (IP, DNS, routing) Tidak pakai
#cloud-config

Ketiganya ditulis dalam format YAML.

Setelah boot, ketiga file ini disimpan di dalam instance pada:

/var/lib/cloud/seed/nocloud-net/
  • meta-data
  • user-data
  • vendor-data
  • network-config

Catatan: File-file ini otomatis digenerate oleh platform (Incus/LXD/dll), jangan diedit manual.

Bagian ini paling sering dipakai untuk konfigurasi awal sebuah instance.

#cloud-config

users:
  - name: ilyasa
    groups: sudo
    shell: /bin/bash
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ilyasa@laptop

Penjelasan singkat:

  • groups: sudo → user masuk ke grup sudo
  • sudo: ALL=(ALL) NOPASSWD:ALL → bisa sudo tanpa password
  • ssh_authorized_keys → public key untuk login SSH tanpa password

Supaya server hanya bisa diakses lewat SSH key (lebih aman), tambahkan:

ssh_pwauth: false

Dipakai untuk hal-hal yang sifatnya umum dan berlaku ke banyak instance, misalnya timezone dan package dasar.

#cloud-config

timezone: Asia/Jakarta

package_update: true

packages:
  - openssh-server
  - curl
  - wget
  - vim
  - htop

Penting: bagian ini format-nya berbeda, tidak pakai #cloud-config.

version: 2
ethernets:
  eth0:
    dhcp4: true

Contoh kebutuhan:

  • IP: 10.14.3.50/24
  • Gateway: 10.14.3.1
  • DNS: 10.14.3.53, 1.1.1.1
version: 2
ethernets:
  eth0:
    addresses:
      - 10.14.3.50/24
    routes:
      - to: default
        via: 10.14.3.1
    nameservers:
      addresses:
        - 10.14.3.53
        - 1.1.1.1
version: 2
ethernets:
  eth0:
    addresses:
      - 10.14.3.50/24
      - 2001:db8:10:14::50/64
    routes:
      - to: default
        via: 10.14.3.1
      - to: default
        via: 2001:db8:10:14::1
    nameservers:
      addresses:
        - 10.14.3.53
        - 1.1.1.1
version: 2
ethernets:
  eth0:
    addresses:
      - 10.14.3.50/24
      - 10.14.3.51/24
      - 10.14.3.52/24
    routes:
      - to: default
        via: 10.14.3.1
    nameservers:
      addresses:
        - 10.14.3.53

Kalau butuh route tambahan selain default gateway:

version: 2
ethernets:
  eth0:
    addresses:
      - 10.14.3.50/24
    routes:
      - to: default
        via: 10.14.3.1
      - to: 10.20.0.0/24
        via: 10.14.3.254
    nameservers:
      addresses:
        - 10.14.3.53

Setelah instance boot, cek apakah cloud-init berjalan dengan baik:

cloud-init status --long

Cek file konfigurasi yang diterima instance:

cd /var/lib/cloud/seed/nocloud-net
ls
cat user-data
cat vendor-data
cat network-config

Cek hasil konfigurasi jaringan:

ip addr show eth0      # cek IP
ip route                 # cek routing
resolvectl status        # cek DNS
  • User Data & Vendor Data wajib diawali #cloud-config.
  • Network Config tidak pakai #cloud-config.
  • Gunakan image yang sudah mendukung cloud-init (biasanya varian /cloud).
  • Untuk konfigurasi network baru, selalu pakai version: 2 — lebih ringkas dan mudah dibaca dibanding version 1.
  • Cloud-init hanya berjalan saat first boot. Kalau instance sudah pernah boot dan konfigurasi diubah, biasanya perlu cloud-init clean lalu reboot agar konfigurasi baru diterapkan ulang.
  • virtualization/lxd/cloud-init.1790518288.txt.gz
  • Last modified: 2026/10/08 04:33
  • (external edit)