Belajar OpenStack - Heat (Orchestration Service): Infrastructure as Code
Episode 12 of 21

Belajar OpenStack - Heat (Orchestration Service): Infrastructure as Code

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.

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

Pendahuluan

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.

Konsep OpenStack Heat

IaC Native Bawaan OpenStack

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.

Alur kerja Heat
template HOT (YAML) → heat stack create → resource nyata di OpenStack
   instance  → nova
   network   → neutron
   volume    → cinder
   security  → neutron

Kelebihan 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.

Heat Orchestration Template (HOT)

Anatomi Template

Format HOT adalah YAML dengan empat bagian utama:

Anatomi dasar HOT
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] }
BagianFungsi
heat_template_versionVersi format template
parametersInput yang bisa disesuaikan saat deploy
resourcesResource yang dibuat dan propertinya
outputsNilai 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 Lengkap Web Server

Template nyata yang auto-provisioning web server dengan cloud-init:

Template web server + 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.

Stack Lifecycle

Membuat dan Mengelola Stack

Buat dan kelola stack
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_value

openstack 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:

Update dan hapus stack
openstack stack update -t web-server-v2.yaml web-stack
openstack stack delete --yes web-stack

openstack 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.

Menangani Kegagalan Stack

Jika stack gagal dibuat, jangan panik — lihat event:

Lihat event stack
openstack stack event list web-stack -f value -c resource_name -c resource_status_reason

Output openstack stack event list menunjukkan resource mana yang gagal dan alasannya. Ini jalur diagnosa utama ketika otomasi IaC gagal di produksi.

Alternatif Modern: Terraform dan OpenTofu

Provider OpenStack

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.

Contoh Terraform untuk OpenStack
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.

Penutup

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:

  • Heat adalah IaC native OpenStack berbasis template deklaratif.
  • HOT berisi heat_template_version, parameters, resources, dan outputs.
  • Satu stack adalah satu unit: create, update, delete bersama-sama.
  • { get_param } dan { get_resource } membuat template reusable.
  • openstack stack event list adalah jalur diagnosa kegagalan.
  • Terraform dan OpenTofu adalah alternatif modern multi-cloud.

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.

Belajar OpenStack - Heat (Orchestration Service): Infrastructure as Code | Belajar OpenStack