Lewati ke konten utama

Apa itu YAML? Memahami Dasar, Sintaks, dan Penggunaannya

YAML adalah format yang sederhana namun bertenaga untuk konfigurasi, otomatisasi, dan serialisasi data. Pelajari cara kerjanya dengan contoh nyata!
Diperbarui 16 Apr 2026  · 14 mnt baca

Selama bertahun-tahun, saya telah bekerja dengan tak terhitung banyaknya berkas konfigurasi, dan YAML menonjol karena kesederhanaan serta keterbacaannya. Baik saat menyiapkan alur kerja di Kubernetes, mendefinisikan layanan di Docker, maupun menyusun permintaan API, YAML membuat konfigurasi yang kompleks menjadi lebih mudah dikelola. Strukturnya yang bersih berbasis indentasi menghilangkan keruwetan format seperti XML namun tetap fleksibel.

Dalam panduan ini, saya akan memandu Anda melalui sintaks, struktur, fitur lanjutan, dan praktik terbaik YAML agar Anda dapat menggunakannya 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 bertumpuk mirip HTML dan JSON menggunakan kurung kurawal serta tanda kutip seperti kamus Python, YAML lebih ringkas dan menggunakan indentasi untuk mendefinisikan struktur, sehingga lebih ramah bagi manusia.

YAML mendukung berbagai tipe data, termasuk skalar (string, angka, boolean), sekuens (daftar), dan pemetaan (pasangan kunci-nilai). YAML banyak digunakan dalam berkas konfigurasi, otomatisasi infrastruktur, dan pertukaran data, terutama pada alat seperti Kubernetes, Docker, dan Ansible.

Selain itu, YAML adalah superset dari JSON, artinya berkas JSON yang valid dapat diurai sebagai YAML. Berkas YAML biasanya memiliki 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-prinsip dasar sintaks YAML, termasuk pasangan kunci-nilai, daftar, data bertingkat, dan komentar.

Aturan sintaks dasar

Ada beberapa aturan sintaks dasar untuk YAML: 

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

Pasangan kunci-nilai

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

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

Daftar di YAML

Daftar direpresentasikan menggunakan tanda minus (-). Ini memungkinkan Anda mencantumkan beberapa objek di bawah satu kunci. 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 bertingkat. Dengan menggunakan indentasi, Anda menunjukkan kunci mana yang merupakan subset dari kunci lainnya.

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

Komentar

Komentar dimulai dengan # dan diabaikan oleh parser YAML. Komentar ini berupa komentar satu baris.

# This is a comment
username: admin
password: secret

Fitur YAML Lanjutan

YAML mencakup fitur-fitur bertenaga seperti string multi-baris, tipe data, serta anchor yang membuat dokumen lebih efisien dan terstruktur. Di bagian ini, kita akan membahas 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 saat dibutuhkan:

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:

  • Daftar (sekuens):
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 pada berkas konfigurasi, membuatnya lebih rapi 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 kunci-nilai dari anchor ke dalam mapping lain. Jika sebuah kunci 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 berkas konfigurasi besar di mana pengulangan nilai secara manual tidak efisien. Fitur ini membantu menjaga berkas YAML tetap DRY (Don't Repeat Yourself) dan memudahkan pembaruan.

Contoh Penggunaan Umum YAML

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

Berkas konfigurasi

YAML banyak digunakan untuk konfigurasi dalam aplikasi seperti Docker Compose, Kubernetes, dan pipeline CI/CD. Kemudahannya untuk dipahami membuat siapa pun dapat mempelajari berkas setelan 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 di Docker dalam kursus Docker tingkat menengah ini.

Serialisasi dan transfer data

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

Contohnya, isi permintaan API yang diformat dalam YAML:

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

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

Infrastructure as Code (IaC)

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

  • Di Ansible, YAML digunakan untuk menulis playbook yang mendefinisikan status sistem, tugas, dan dependensi, memastikan komponen infrastruktur dikonfigurasi secara konsisten. 
  • Kubernetes menggunakan manifest YAML untuk mendefinisikan sumber daya seperti pod, layanan, 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 di Kubernetes dalam 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 Berkas YAML

YAML banyak digunakan untuk berkas konfigurasi, otomatisasi, dan serialisasi data, namun karena bergantung pada indentasi, pemformatan yang benar sangat penting. Berikut cara membaca, menulis, memvalidasi, dan mengedit YAML secara efektif.

Membaca dan menulis YAML di Python

Pustaka PyYAML Python dapat mengurai dan menghasilkan YAML.

Bayangkan Anda memiliki berkas konfigurasi YAML berikut:

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

Berikut cara Anda dapat bekerja dengan berkas 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 berkas 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 Perlu Dihindari di YAML

Meski sederhana, Anda tetap mudah menemui masalah dan salah ketik saat bekerja dengan YAML. Bagian ini membahas kesalahan-kesalahan tersebut dan memberikan praktik terbaik untuk menulis berkas yang bersih dan benar. Inilah juga alasan saya merekomendasikan penggunaan 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 sebenarnya keputusan yang disengaja, karena sistem yang berbeda membaca tab secara berbeda, dan untuk meminimalkan dampak, spasi menjadi pilihan yang disarankan.

Indentasi yang salah

Pastikan indentasi konsisten untuk menghindari kesalahan parsing. Karena indentasi adalah satu-satunya metode YAML untuk menunjukkan hierarki, parsing yang tidak tepat dapat menyebabkan masalah pada kode Anda. Anda dapat dengan mudah menaruh pasangan key: value di tempat yang salah, jadi selalu perhatikan indentasi!

Lupa memberi tanda kutip untuk karakter khusus

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

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

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

Kesimpulan

YAML adalah format yang bertenaga namun sederhana yang banyak digunakan dalam konfigurasi, serialisasi data, dan otomatisasi 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 atau target data dapat membaca YAML, YAML adalah metode yang layak dan bermanfaat untuk men-serialisasi dan mentransportasikan data. Pastikan Anda mengirim data ke target yang dapat memproses YAML.

Apakah YAML aman? Bisakah berkas YAML menimbulkan risiko keamanan?

YAML sendiri hanyalah format data, tetapi risiko keamanan muncul saat mengurai berkas 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.

Bisakah YAML mendukung variabel lingkungan?

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

Bagaimana cara menangani komentar di YAML?

YAML mendukung komentar satu baris menggunakan simbol #, tetapi tidak mendukung komentar multi-baris. Jika Anda membutuhkan komentar multi-baris, solusi umum adalah menggunakan kunci dummy seperti _comment. Namun, ini hanyalah 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

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

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

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

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

12 mnt

Lihat Lebih BanyakLihat Lebih Banyak