Episode ini memperkenalkan Heat sebagai IaC native OpenStack: mendefinisikan instance, network, volume, dan security group dalam satu template HOT deklaratif, memahami heat_template_version, parameters, resources, dan outputs, mengelola stack lifecycle, serta alternatif modern memakai Terraform dan OpenTofu.

Selama sebelas episode, kalian membuat resource satu per satu: network, subnet, instance, volume, security group. Di produksi, pola seperti itu tidak berkelanjutan — infrastruktur harus didefinisikan sebagai kode yang bisa diulang, diversi, dan di-rollback. Inilah pekerjaan Heat, Orchestration Service OpenStack dan jawaban native untuk Infrastructure as Code.
Episode 12 membahas Heat dari konsep hingga praktik: apa itu template HOT, anatomi YAML-nya, cara mendefinisikan web server plus database plus jaringan dalam satu stack, pengelolaan lifecycle stack, dan posisi Heat di samping Terraform dan OpenTofu sebagai alternatif modern.
Heat memungkinkan kalian mendeskripsikan seluruh infrastruktur — instance, network, volume, security group, bahkan load balancer — dalam satu template deklaratif, lalu mewujudkannya menjadi stack. Satu stack adalah satu unit: dibuat, diupdate, dan dihapus bersama-sama.
template HOT (YAML) → heat stack create → resource nyata di OpenStack
instance → nova
network → neutron
volume → cinder
security → neutronKelebihan utama Heat: seluruh resource punya satu siklus hidup. Kalian tidak perlu menghapus satu-satu; hapus stack dan semua resource ikut terhapus. Update stack menciptakan perubahan terorchestrasi, bukan chaos manual.
Format HOT adalah YAML dengan empat bagian utama:
heat_template_version: 2023-04-14
description: Template web server sederhana
parameters:
image:
type: string
default: ubuntu-jammy
flavor:
type: string
default: m1.small
resources:
my_instance:
type: OS::Nova::Server
properties:
image: { get_param: image }
flavor: { get_param: flavor }
outputs:
instance_ip:
description: IP instance
value: { get_attr: [my_instance, first_address] }| Bagian | Fungsi |
|---|---|
heat_template_version | Versi format template |
parameters | Input yang bisa disesuaikan saat deploy |
resources | Resource yang dibuat dan propertinya |
outputs | Nilai yang ditampilkan setelah stack jadi |
Perhatikan get_param: image di dalam blok resource — itu referensi ke parameter yang dimasukkan user saat deploy. Inilah cara template menjadi reusable: satu template, banyak nilai berbeda.
Template nyata yang auto-provisioning web server dengan cloud-init:
heat_template_version: 2023-04-14
parameters:
key_name:
type: string
network_id:
type: string
resources:
security_group_web:
type: OS::Neutron::SecurityGroup
properties:
rules:
- protocol: tcp
port_range_min: 22
port_range_max: 22
- protocol: tcp
port_range_min: 80
port_range_max: 80
web_server:
type: OS::Nova::Server
properties:
image: ubuntu-jammy
flavor: m1.small
key_name: { get_param: key_name }
networks: [ { network: { get_param: network_id } } ]
user_data: |
#!/bin/bash
apt-get update
apt-get install -y nginx
security_groups: [ { get_resource: security_group_web } ]
outputs:
server_id:
value: { get_resource: web_server }{ get_resource: security_group_web } menghubungkan resource instance ke security group yang dibuat template yang sama. Dengan satu file ini, kalian mendapatkan network attachment, firewall, dan provisioning otomatis — tanpa satu pun perintah manual.
openstack stack create -t web-server.yaml --parameter key_name=mykey web-stack
openstack stack show web-stack -f value -c stack_status
openstack stack output show web-stack server_id -f value -c output_valueopenstack stack create -t web-server.yaml membuat stack dari template. Pantau statusnya hingga CREATE_COMPLETE, lalu ambil output. Untuk mengubah infrastruktur, update template lalu jalankan:
openstack stack update -t web-server-v2.yaml web-stack
openstack stack delete --yes web-stackopenstack stack update menerapkan perubahan hanya pada resource yang berubah, sementara openstack stack delete membersihkan seluruh resource dalam satu perintah — jauh lebih aman daripada hapus manual satu per satu.
Jika stack gagal dibuat, jangan panik — lihat event:
openstack stack event list web-stack -f value -c resource_name -c resource_status_reasonOutput openstack stack event list menunjukkan resource mana yang gagal dan alasannya. Ini jalur diagnosa utama ketika otomasi IaC gagal di produksi.
Heat bukan satu-satunya jalan. Terraform dan fork open-source-nya OpenTofu menyediakan provider OpenStack resmi. Banyak organisasi memilih Terraform karena satu bahasa untuk banyak cloud — AWS, GCP, dan OpenStack sekaligus.
resource "openstack_compute_instance_v2" "web" {
name = "web-1"
image_id = data.openstack_images_image_v2.ubuntu.id
flavor_id = "m1.small"
}Pertimbangan memilih antara Heat dan Terraform: Heat lebih native dan ringkas untuk OpenStack murni, sedangkan Terraform/OpenTofu unggul di multi-cloud. Banyak tim produksi memakai Terraform untuk orkestrasi lintas cloud dan Heat sebagai opsi native.
Episode 12 mengubah cara kalian berpikir tentang infrastruktur: Heat mendefinisikan instance, network, volume, dan security group dalam satu template HOT deklaratif, dengan lifecycle stack yang aman untuk update dan rollback, sementara Terraform dan OpenTofu menawarkan alternatif multi-cloud dengan provider OpenStack resmi.
Inti yang harus dibawa pulang:
{ get_param } dan { get_resource } membuat template reusable.openstack stack event list adalah jalur diagnosa kegagalan.Di episode 13 selanjutnya kita akan membahas Octavia (Load Balancer as a Service) — mendistribusikan traffic ke banyak instance backend, memahami arsitektur Amphora berbasis VM, serta membuat load balancer, listener HTTP/HTTPS, pool, member, dan health monitor dengan algoritma round robin, least connections, dan source IP.