Belajar OpenStack - Cloud-Init, Keypairs & Metadata Service
Episode 5 of 21

Belajar OpenStack - Cloud-Init, Keypairs & Metadata Service

Episode ini mengotomasi konfigurasi instance: membuat dan mengelola SSH keypair, mengirim user data cloud-init untuk setup otomatis saat boot, serta memahami metadata service 169.254.169.254 dan config drive sebagai alternatifnya.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Di episode 4 kalian berhasil membuat instance — tapi masih menyentuh VM secara manual. Di dunia cloud, menyentuh server satu per satu adalah anti-pola. Instance harus menyiapkan dirinya sendiri saat boot: hostname, user, SSH key, package, hingga menjalankan script. Inilah pekerjaan cloud-init.

Episode 5 membahas tiga hal yang bekerja bersama: SSH keypair untuk akses aman tanpa password, user data yang dikirim ke cloud-init saat instance lahir, serta metadata service dan config drive yang menjadi kanal informasi tersebut.

SSH Keypairs

Membuat Keypair dari OpenStack

SSH keypair memungkinkan login ke instance tanpa password. Publik key disimpan di OpenStack, private key tetap di mesin kalian. Cara paling mudah — OpenStack sendiri yang menghasilkan keypair:

Buat keypair dari OpenStack
openstack keypair create mykey > mykey.pem
chmod 600 mykey.pem

openstack keypair create mykey > mykey.pem mengarahkan private key ke file mykey.pem. Jangan lupa chmod 600 — jika permission longgar, SSH menolak memakai key tersebut.

Alternatif: Mengunggah Key Sendiri

Kalian juga bisa memakai keypair yang sudah dimiliki:

Import key yang sudah ada
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
openstack keypair create --public-key ~/.ssh/id_ed25519.pub mykey

Setelah keypair terdaftar, saat membuat instance sertakan --key-name:

Instance dengan keypair
openstack server create --image ubuntu-jammy --flavor m1.small \
  --network private --key-name mykey ubuntu-vm

Cloud-Init dan User Data

Apa itu Cloud-Init

cloud-init adalah standar de-facto untuk inisialisasi instance di cloud. Saat instance pertama boot, cloud-init membaca konfigurasi dari metadata service, lalu menjalankan: set hostname, buat user, masukkan SSH key, install package, hingga eksekusi script. Semua tanpa login manual.

Mengirim User Data

User data adalah skrip atau konfigurasi yang kalian lampirkan saat membuat instance. Buat file dulu:

Buat file user data
cat > user-data.sh <<EOF
#!/bin/bash
set -euo pipefail
apt-get update
apt-get install -y nginx
echo "hello-openstack" > /var/www/html/index.html
systemctl enable nginx
EOF

Skrip di atas menginstall nginx dan mengganti halaman default saat instance pertama kali boot.

Tip

Pastikan user data diawali shebang #!/bin/bash agar cloud-init mengenalinya sebagai script, bukan konfigurasi cloud-config YAML. Format cloud-config juga didukung dan lebih deklaratif.

Membuat Instance dengan User Data

Instance dengan user data
openstack server create --image ubuntu-jammy --flavor m1.small \
  --network private --key-name mykey --user-data user-data.sh \
  ubuntu-nginx

openstack server create --user-data user-data.sh mengirim skrip ke metadata service. Tunggu beberapa menit setelah status ACTIVE, lalu akses via floating IP yang akan kita pelajari di episode 7 — nginx seharusnya sudah berjalan.

Metadata Service & Config Drive

Metadata Service 169.254.169.254

Setiap instance dapat mengambil informasi tentang dirinya dari metadata service di alamat link-local http://169.254.169.254/. Alamat ini sama dengan yang dipakai AWS — membuat cloud-init kompatibel lintas cloud.

Lihat metadata dari dalam instance
curl -s http://169.254.169.254/openstack/latest/meta_data.json

Output curl -s http://169.254.169.254/openstack/latest/meta_data.json berisi JSON berisi nama instance, project, dan lainnya. Endpoint yang sering dipakai:

EndpointIsi
/latest/meta_data.jsonMetadata instance
/latest/user_dataUser data yang dikirim
/latest/network_data.jsonKonfigurasi network

Config Drive sebagai Alternatif

Tidak semua environment menyediakan DHCP metadata. Solusinya adalah config drive — partisi kecil yang di-mount ke instance sebagai disk CONFIG-2 atau config-2. Nova otomatis menulis user data dan metadata ke config drive saat instance dibuat:

Aktifkan config drive
openstack server create --image ubuntu-jammy --flavor m1.small \
  --network private --key-name mykey --config-drive true ubuntu-cfg

Di dalam instance, isi config drive bisa dibaca:

Baca config drive dari instance
sudo mkdir -p /mnt/config
sudo mount /dev/vdb /mnt/config
ls /mnt/config

--config-drive true menjamin user data tersedia bahkan ketika DHCP tidak berfungsi — pola yang sering dipakai di environment dengan jaringan ketat.

Penutup

Episode 5 mengubah instance kalian dari "server kosong" menjadi "server yang siap pakai secara otomatis": SSH keypair untuk akses aman tanpa password, user data cloud-init untuk provisioning saat boot, serta metadata service dan config drive sebagai kanal informasi dari cloud ke instance.

Inti yang harus dibawa pulang:

  • Keypair memungkinkan login SSH tanpa password dan private key wajib dijaga.
  • cloud-init menjalankan konfigurasi otomatis saat instance pertama boot.
  • User data bisa berupa skrip bash atau konfigurasi cloud-config.
  • Metadata service tersedia di http://169.254.169.254/ dari dalam instance.
  • Config drive adalah alternatif ketika DHCP metadata tidak tersedia.
  • Kombinasi keypair + user data membuat provisioning sepenuhnya otomatis.

Di episode 6 selanjutnya kita akan membahas Neutron Networking Fundamentals — arsitektur SDN dengan ML2 plugin dan mechanism driver, perbedaan provider network dan self-service network, serta konsep subnet dan port yang menjadi fondasi seluruh jaringan OpenStack. Persiapkan mental kalian, karena fase networking dimulai!

Belajar OpenStack - Cloud-Init, Keypairs & Metadata Service | Belajar OpenStack