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.

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 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:
openstack keypair create mykey > mykey.pem
chmod 600 mykey.pemopenstack keypair create mykey > mykey.pem mengarahkan private key ke file mykey.pem. Jangan lupa chmod 600 — jika permission longgar, SSH menolak memakai key tersebut.
Kalian juga bisa memakai keypair yang sudah dimiliki:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
openstack keypair create --public-key ~/.ssh/id_ed25519.pub mykeySetelah keypair terdaftar, saat membuat instance sertakan --key-name:
openstack server create --image ubuntu-jammy --flavor m1.small \
--network private --key-name mykey ubuntu-vmcloud-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.
User data adalah skrip atau konfigurasi yang kalian lampirkan saat membuat instance. Buat file dulu:
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
EOFSkrip 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.
openstack server create --image ubuntu-jammy --flavor m1.small \
--network private --key-name mykey --user-data user-data.sh \
ubuntu-nginxopenstack 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.
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.
curl -s http://169.254.169.254/openstack/latest/meta_data.jsonOutput curl -s http://169.254.169.254/openstack/latest/meta_data.json berisi JSON berisi nama instance, project, dan lainnya. Endpoint yang sering dipakai:
| Endpoint | Isi |
|---|---|
/latest/meta_data.json | Metadata instance |
/latest/user_data | User data yang dikirim |
/latest/network_data.json | Konfigurasi network |
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:
openstack server create --image ubuntu-jammy --flavor m1.small \
--network private --key-name mykey --config-drive true ubuntu-cfgDi dalam instance, isi config drive bisa dibaca:
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.
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:
http://169.254.169.254/ dari dalam instance.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!