Lewati ke konten utama

Apa itu YAML? Memahami Dasar, Sintaks, dan Use Case

YAML adalah format yang sederhana namun kuat untuk konfigurasi, automasi, dan serialisasi data. Pelajari cara kerjanya dengan contoh nyata!
Diperbarui 31 Agu 2026  · 14 mnt baca

Jelajahi dengan AI

ChatGPTClaudePerplexity

Selama bertahun-tahun, saya telah bekerja dengan tak terhitung banyaknya file konfigurasi, dan YAML menonjol karena kesederhanaan dan keterbacaannya. Baik saat menyiapkan workflow di Kubernetes, mendefinisikan service di Docker, maupun menyusun permintaan API, YAML membuat konfigurasi kompleks jadi lebih mudah dikelola. Strukturnya yang rapi berbasis indentasi menghilangkan keruwetan format seperti XML sekaligus tetap fleksibel.

Dalam panduan ini, saya akan mengulas sintaks, struktur, fitur lanjutan, dan praktik terbaik YAML agar Anda bisa bekerja dengannya dengan percaya diri. 

Apa itu YAML?

YAML (Yet Another Markup Language / YAML Ain’t Markup Language) adalah format serialisasi data yang mengutamakan keterbacaan dan kemudahan penggunaan. Sementara XML menggunakan campuran tag bertingkat mirip HTML dan JSON menggunakan kurung kurawal serta tanda kutip seperti kamus Python, YAML lebih ringkas dan memakai indentasi untuk mendefinisikan struktur, sehingga lebih ramah bagi manusia.

YAML mendukung berbagai tipe data, termasuk skalar (string, angka, boolean), urutan (list), dan pemetaan (pasangan key-value). YAML banyak digunakan dalam file konfigurasi, automasi infrastruktur, dan pertukaran data, terutama pada alat seperti Kubernetes, Docker, dan Ansible.

Selain itu, YAML adalah superset dari JSON, artinya file JSON yang valid dapat diurai sebagai YAML. File YAML biasanya menggunakan ekstensi .yaml atau .yml.

Anda juga dapat mempelajari lebih lanjut tentang YAML di situs web-nya!

Sintaks dan Struktur YAML

Bagian ini akan membahas prinsip dasar sintaks YAML, termasuk pasangan key-value, list, data bertingkat, dan komentar.

Aturan sintaks dasar

Ada beberapa aturan sintaks dasar untuk YAML: 

  • Indentasi spasi menunjukkan struktur, jadi hindari tab! 
  • Pasoangan key-value mengikuti struktur key: value, mirip bahasa lain. 
  • Tanda minus di awal baris menandakan sebuah list. 
  • Menggunakan # akan membuat baris komentar.
# Here is an example of YAML
name: John Doe
age: 30
skills:
  - Python
  - YAML

Pasangan key-value

YAML merepresentasikan data sebagai pasangan key-value, mirip dengan dictionary di Python. Ini sering kali menunjukkan informasi yang diberikan ke berbagai file konfigurasi dan pengaturan. Tidak perlu menandai string atau key dengan tanda kutip; cukup tulis key dan value yang diperlukan:

location: New York
country: USA
security-level: user

List dalam YAML

List direpresentasikan menggunakan tanda minus (-). Ini memungkinkan Anda mencantumkan beberapa objek di bawah satu key. Ini sering ditampilkan secara visual sebagai bullet saat dibaca oleh editor Markup.

fruits:
  - Apple
  - Banana
  - Cherry

Data bertingkat

Struktur bertingkat memungkinkan representasi data hierarkis menggunakan indentasi. Anggap ini seperti dictionary bersarang. Dengan menggunakan indentasi, Anda menunjukkan key mana yang merupakan subset dari yang lain.

person:
  name: Alice
  details:
    age: 25
    city: London

Komentar

Komentar diawali dengan # dan diabaikan oleh parser YAML. Komentar ini adalah komentar satu baris.

# This is a comment
username: admin
password: secret

Fitur Lanjutan YAML

YAML menyertakan fitur-fitur kuat seperti string multi-baris, tipe data, serta anchor yang membuat dokumen lebih efisien dan terstruktur. Di bagian ini, kita akan mengeksplorasi kemampuan ini dengan contoh praktis.

String multi-baris

YAML mendukung string multi-baris menggunakan | (literal block) atau > (folded block). 

  • Literal block | akan membuat baris baru \n untuk setiap jeda baris. 
  • Folded block > hanya akan membuat baris baru untuk jeda baris berturut-turut.
literal: |
  This is a
  multi-line string.

folded: >
  This is another
  multi-line string.

Hal di atas lebih mudah dipahami dengan menunjukkan keluarannya.

  • Untuk | (literal block):
This is a
multi-line string.
  • Untuk > (folded block):
This is another multi-line string.

Tipe data dalam YAML

YAML mendukung berbagai tipe data, termasuk string, angka, boolean, dan nilai null. YAML secara otomatis mendeteksi tipe berdasarkan pemformatan tetapi juga memungkinkan definisi tipe secara eksplisit.

Contoh berikut menunjukkan penggunaan tipe data dasar dalam YAML:

string_implicit: Hello, YAML!  # No quotes needed unless necessary
string_double_quoted: "Supports escape sequences like \n and \t"
string_single_quoted: 'Raw text, no escape sequences'

integer: 42  # Whole numbers
float: 3.14  # Numbers with decimals

boolean_true: true
boolean_false: false

null_value: null  # Null value
null_tilde: ~  # Another way to represent null

YAML memungkinkan deklarasi tipe eksplisit menggunakan !!type bila diperlukan:

explicit_string: !!str 123  # Forces 123 to be a string
explicit_integer: !!int "42"  # Forces "42" to be an integer
explicit_float: !!float "3.14"  # Forces "3.14" to be a float

Karena YAML sering digunakan untuk data terstruktur, YAML mendukung:

  • List (sequence):
fruits:
  - Apple
  - Banana
  - Cherry
  • Dictionary (mapping):
person:
  name: Alice
  age: 30
  is_student: false

Anchor dan alias

YAML memungkinkan Anda mendefinisikan nilai yang dapat digunakan kembali menggunakan anchor (&) dan mereferensikannya kemudian menggunakan alias (*). Ini membantu mengurangi redundansi dalam file konfigurasi sehingga lebih ringkas dan mudah dipelihara.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  host: example.com
  retries: *default_settings  # Reuses the retries value from defaults

Sintaks <<: memungkinkan penggabungan pasangan key-value dari sebuah anchor ke dalam mapping lain. Jika sebuah key ada di keduanya, nilai baru akan menimpa nilai asli.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  <<: *default_settings  # Merges all key-value pairs from default_settings
  host: example.com  # This key is added to the merged data

Berikut struktur akhir yang dihasilkan:

server1:
  retries: 3
  timeout: 30
  host: example.com

Anchor dan alias sangat berguna dalam file konfigurasi besar di mana pengulangan nilai secara manual tidak efisien. Fitur ini membantu menjaga file YAML tetap DRY (Don't Repeat Yourself) dan memudahkan pembaruan.

Use Case Umum untuk YAML

YAML banyak digunakan dalam pengembangan perangkat lunak, automasi infrastruktur, dan manajemen API. Sintaks yang mudah dibaca menjadikannya format pilihan untuk file konfigurasi, serialisasi data, dan Infrastructure as Code (IaC). Mari kita telusuri penerapan yang paling umum.

File konfigurasi

YAML banyak digunakan untuk konfigurasi dalam aplikasi seperti Docker Compose, Kubernetes, dan pipeline CI/CD. Kemudahannya untuk dipahami membuat siapa pun dapat mempelajari file set-up YAML Docker dan mengerti apa yang terjadi.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80

Keterbacaan YAML serta dukungan untuk anchor dan alias membantu mengurangi pengulangan, sehingga lebih mudah dipelihara dibandingkan JSON atau XML.

Pelajari lebih lanjut tentang YAML dan penggunaannya dalam Docker di kursus Docker tingkat menengah ini.

Serialisasi dan transfer data

YAML digunakan untuk menserialisasi data bagi API dan alat manajemen konfigurasi dengan mengonversi struktur data kompleks menjadi format yang mudah dibaca manusia dan mudah diurai mesin. 

Sebagai contoh, body permintaan API yang diformat dalam YAML:

user:
  id: 123
  name: "John Doe"
  email: "johndoe@example.com"
  active: true

Struktur berbasis indentasi YAML menghilangkan sintaks yang tidak perlu, menjadikannya ringan, mudah dibaca, dan mudah diubah dibandingkan JSON.

Infrastructure as Code (IaC)

Alat manajemen konfigurasi seperti Ansible dan Kubernetes memanfaatkan YAML untuk mendefinisikan state sistem, mengotomatisasi proses, dan memastikan konsistensi di berbagai environment.

  • Di Ansible, YAML digunakan untuk menulis playbook yang mendefinisikan state sistem, tugas, dan dependensi, memastikan komponen infrastruktur dikonfigurasi secara konsisten. 
  • Kubernetes menggunakan manifest YAML untuk mendefinisikan resource seperti pod, service, dan deployment, sehingga memungkinkan orkestrasi otomatis aplikasi terkontainerisasi.

Berikut contoh konfigurasi Pod Kubernetes:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app-container
      image: my-app:latest
      ports:
        - containerPort: 8080

Pelajari lebih lanjut tentang bagaimana YAML digunakan dalam Kubernetes di kursus Introduction to Kubernetes ini.

Dokumentasi API

Spesifikasi API seperti OpenAPI dan Swagger menggunakan YAML untuk mendefinisikan endpoint dan struktur data dengan cara yang mudah dibaca. YAML digunakan untuk menguraikan metode API, parameter permintaan, format respons, dan metode autentikasi.

Berikut contoh spesifikasi OpenAPI dalam YAML:

openapi: 3.0.0
info:
  title: User API
  version: "1.0"
paths:
  /users:
    get:
      summary: Retrieve a list of users
      responses:
        "200":
          description: Successful response

Spesifikasi OpenAPI, misalnya, menggunakan YAML untuk mendokumentasikan RESTful API. Ini memungkinkan mereka menyediakan cetak biru yang jelas untuk menghasilkan SDK klien, dokumentasi API interaktif, dan pengujian otomatis. Format terstruktur ini memastikan konsistensi di seluruh implementasi API.

Bekerja dengan File YAML

YAML banyak digunakan untuk file konfigurasi, automasi, dan serialisasi data, tetapi karena mengandalkan indentasi, pemformatan yang benar sangat penting. Berikut cara membaca, menulis, memvalidasi, dan mengedit YAML secara efektif.

Membaca dan menulis YAML di Python

Library PyYAML di Python dapat mengurai dan membuat YAML.

Bayangkan Anda memiliki file konfigurasi YAML berikut:

database:
  host: localhost
  port: 5432
  user: admin
  password: secret

Berikut cara Anda dapat bekerja dengan file konfigurasi di Python:

import yaml

# Load YAML data
with open("config.yaml", "r") as file:
    data = yaml.safe_load(file)  # safe_load prevents arbitrary code execution

# Modify data (optional)
data["database"]["user"] = "new_user"

# Write YAML data
with open("output.yaml", "w") as file:
    yaml.dump(data, file, default_flow_style=False)

Jika Anda tertarik bekerja dengan data JSON di Python, lihat tutorial Python JSON yang komprehensif.

Memvalidasi file YAML

Untuk memastikan struktur yang benar, Anda dapat menggunakan alat untuk memeriksa tab yang menggantikan spasi atau masalah aneh seperti karakter berulang, masalah sintaks, dan spasi di akhir baris.

Berikut beberapa validator YAML yang populer:

Mengedit YAML

Anda dapat menulis dan mengedit YAML di editor teks apa pun, tetapi alat linter dan penyorotan sintaks meningkatkan keterbacaan.

Beberapa editor favorit saya:

  • VS Code (dengan plugin YAML)
  • PyCharm (dukungan bawaan)
  • Sublime Text (dengan penyorotan sintaks YAML)

Kesalahan Umum yang Harus Dihindari di YAML

Terlepas dari kesederhanaannya, Anda tetap bisa dengan mudah menemui masalah dan typo saat bekerja dengan YAML. Bagian ini membahas kesalahan-kesalahan tersebut dan memberikan praktik terbaik untuk menulis file yang rapi dan benar. Ini juga alasan mengapa saya menyarankan menggunakan linter atau editor teks!

Mencampur tab dan spasi

YAML bergantung pada spasi untuk indentasi—jangan pernah mencampur spasi dan tab. Tab akan langsung merusak skrip YAML Anda. Ini memang keputusan yang disengaja, karena sistem yang berbeda membaca tab secara berbeda, dan untuk meminimalkan dampak, spasi menjadi pilihan yang disarankan.

Indentasi tidak benar

Pastikan indentasi konsisten untuk menghindari error parsing. Karena indentasi adalah satu-satunya metode YAML untuk menandai hierarki, parsing yang tidak tepat dapat menimbulkan masalah pada kode Anda. Anda bisa saja tanpa sengaja menyelipkan pasangan key: value ke tempat yang salah, jadi perhatikan indentasi!

Lupa memberi tanda kutip untuk karakter khusus

Gunakan tanda kutip untuk string yang berisi karakter khusus atau spasi. Hal seperti backslash, koma, tanda seru, dan seterusnya memerlukan tanda kutip agar dibaca sebagai string.

path: "/home/user/documents"
message: "Hello, World!"

Dengan melakukan validasi yang tepat, pengeditan terstruktur, dan menggunakan PyYAML di Python, Anda dapat bekerja secara efisien dengan file YAML sambil menghindari jebakan umum.

Kesimpulan

YAML adalah format yang kuat namun sederhana dan banyak digunakan dalam konfigurasi, serialisasi data, dan automasi infrastruktur. Dengan memahami sintaks, struktur, dan praktik terbaiknya, Anda dapat bekerja secara efisien dengan YAML di berbagai aplikasi.

Jika Anda tertarik menerapkan YAML dalam skenario dunia nyata:

FAQs

Apakah YAML bersifat universal?

Selama sumber data atau target dapat membaca YAML, YAML adalah metode yang layak dan berguna untuk menserialisasi dan mengirim data. Pastikan Anda mengirim data ke target yang dapat memproses YAML.

Apakah YAML aman? Dapatkah file YAML menimbulkan risiko keamanan?

YAML sendiri hanyalah format data, tetapi risiko keamanan muncul saat mengurai file YAML yang tidak tepercaya. Metode default yaml.load() di PyYAML Python dapat mengeksekusi kode sewenang-wenang yang disisipkan dalam YAML, sehingga berisiko. Sebagai gantinya, selalu gunakan yaml.safe_load() untuk mencegah eksekusi tidak disengaja dari kode berbahaya. Demikian pula, saat menggunakan YAML dalam aplikasi, pastikan validasi skema yang ketat untuk menghindari kerentanan keamanan.

Dapatkah YAML mendukung variabel lingkungan?

Ya! Meskipun YAML sendiri tidak secara langsung memproses variabel lingkungan, banyak alat (seperti Docker Compose dan Kubernetes) yang memungkinkan referensi variabel lingkungan di dalam file YAML.

Bagaimana cara menangani komentar di YAML?

YAML mendukung komentar satu baris menggunakan simbol #, tetapi tidak mendukung komentar multi-baris. Jika Anda memerlukan komentar multi-baris, solusi umum adalah menggunakan key semu seperti _comment. Namun, ini hanya konvensi dan tidak akan diabaikan oleh parser YAML kecuali aplikasi Anda secara khusus memfilternya.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Saya seorang data scientist dengan pengalaman dalam analisis spasial, machine learning, dan pipeline data. Saya pernah bekerja dengan GCP, Hadoop, Hive, Snowflake, Airflow, dan proses data science/engineering lainnya.

Topik
Rekayasa Data

Pelajari lebih lanjut tentang data engineering dengan kursus-kursus ini!

Program

Data Engineer dalam Python

40 Hr
Dapatkan keterampilan yang sangat dicari untuk mengelola data dengan efisien, termasuk mengimpor, membersihkan, mengelola data, serta menjadwalkan dan memantau pipeline, sehingga Anda dapat menonjol di bidang data engineering.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak