Tutorial Sintaksis YAML: Pengantar Praktis
YAML (YAML Ain't Markup Language) adalah format serialisasi data yang mudah dibaca manusia, banyak digunakan dalam file konfigurasi, pipeline CI/CD, dan infrastructure-as-code. Jika Anda bekerja dengan Docker Compose, Kubernetes, GitHub Actions, atau Ansible, Anda sudah menggunakan YAML setiap hari. Tutorial ini membahas semua yang Anda butuhkan untuk menulis YAML dengan percaya diri.
Mengapa YAML?
Keunggulan utama YAML adalah keterbacaan. Bandingkan data yang sama dalam JSON dan YAML:
JSON:
{
"server": {
"host": "localhost",
"port": 8080,
"debug": true,
"allowed_origins": ["http://localhost:3000", "https://example.com"]
}
}
YAML:
server:
host: localhost
port: 8080
debug: true
allowed_origins:
- http://localhost:3000
- https://example.com
YAML mencapai struktur yang sama dengan lebih sedikit tanda baca. Tidak ada kurung kurawal, tidak ada kurung siku untuk kasus sederhana, tidak ada penandaan kutip yang wajib. Ini membuat file konfigurasi lebih mudah dibaca dan diedit secara manual.
Tipe Data Dasar
Skalar
YAML secara otomatis menyimpulkan tipe dari nilai:
string: hello world # String (no quotes needed)
quoted: "hello world" # Explicit string
integer: 42 # Integer
float: 3.14 # Float
boolean: true # Boolean (true/false, yes/no, on/off)
null_value: null # Null (also ~ or empty)
date: 2025-01-15 # Date (ISO 8601)
Kesalahan umum: Nilai seperti yes, no, on, off diinterpretasikan sebagai boolean. Jika Anda bermaksud string "yes", gunakan tanda kutip: "yes".
String dan Penandaan Kutip
String jarang membutuhkan tanda kutip, tetapi beberapa kasus memerlukannya:
plain: This is a plain string
single: 'Preserves \n as literal backslash-n'
double: "Interprets \n as newline"
colon: "value: with colon needs quotes"
hash: "value # with hash needs quotes"
String Multiline
YAML memiliki dua gaya multiline:
Blok literal (|) — mempertahankan jeda baris:
description: |
This is line one.
This is line two.
This is line four (after blank line).
Blok terlipat (>) — menggabungkan baris dengan spasi:
description: >
This is a long paragraph
that will be folded into
a single line.
Tambahkan - untuk menghapus baris baru di akhir (|-, >-) atau + untuk mempertahankannya (|+, >+).
Koleksi
List (Sequence)
# Block style
fruits:
- apple
- banana
- cherry
# Flow style (inline)
fruits: [apple, banana, cherry]
Map (Mapping)
# Block style
person:
name: Alice
age: 30
city: London
# Flow style
person: {name: Alice, age: 30, city: London}
Struktur Bersarang
departments:
- name: Engineering
lead: Alice
members:
- Bob
- Charlie
- name: Design
lead: Diana
members:
- Eve
Anchor dan Alias
Anchor (&) dan alias (*) memungkinkan Anda menggunakan ulang nilai:
defaults: &defaults
adapter: postgres
host: localhost
port: 5432
development:
database: dev_db
<<: *defaults
production:
database: prod_db
<<: *defaults
host: db.example.com # Override the default
Key merge << menggabungkan semua properti dari anchor. Properti yang didefinisikan setelah merge akan menimpa nilai anchor. Baca lebih lanjut tentang pola anchor lanjutan di panduan anchor dan alias YAML kami.
Dokumen Ganda
Satu file YAML dapat berisi beberapa dokumen yang dipisahkan oleh ---:
---
# Document 1: Config
apiVersion: v1
kind: ConfigMap
---
# Document 2: Service
apiVersion: v1
kind: Service
Ini umum digunakan dalam manifest Kubernetes.
Kesalahan Umum
1. Error Indentasi
YAML menggunakan spasi, tidak pernah tab. Indentasi yang tidak konsisten adalah error paling umum:
# WRONG - mixed indentation
server:
host: localhost
port: 8080 # Error: unexpected indentation
# CORRECT
server:
host: localhost
port: 8080
Gunakan YAML Formatter kami untuk memperbaiki masalah indentasi secara otomatis.
2. Masalah Norway
Kode negara seperti NO (Norwegia) diinterpretasikan sebagai boolean false:
# WRONG
countries:
- NO # Interpreted as false!
- SE
- DK
# CORRECT
countries:
- "NO"
- SE
- DK
3. Karakter Khusus Tanpa Tanda Kutip
Titik dua, tanda pagar, dan kurung dalam nilai memerlukan tanda kutip:
# WRONG
message: Error: file not found
url: http://example.com # Might break
# CORRECT
message: "Error: file not found"
url: "http://example.com"
4. Jebakan Nomor Versi
Nomor versi seperti 1.0 di-parse sebagai float:
# WRONG
version: 1.0 # Becomes 1 (float)
# CORRECT
version: "1.0" # String
Memvalidasi YAML
Selalu validasi YAML Anda sebelum deploy. Error sintaksis dalam YAML dapat menyebabkan kegagalan yang membingungkan pada aplikasi. YAML Validator kami memeriksa sintaksis secara instan, menyoroti baris dan kolom persis dari setiap error.
Untuk pembahasan lebih mendalam tentang perbedaan antara YAML dan JSON, lihat perbandingan YAML vs JSON kami.
FAQ
Berapa spasi yang harus saya gunakan untuk indentasi YAML?
Dua spasi adalah konvensi paling umum, digunakan oleh Kubernetes, Docker Compose, GitHub Actions, dan sebagian besar alat DevOps. Beberapa proyek menggunakan empat spasi. Aturan utamanya adalah konsistensi dalam satu file — jangan pernah mencampur level indentasi.
Bisakah YAML menyertakan komentar?
Ya, YAML mendukung komentar satu baris dengan #. Tidak ada sintaksis komentar multi-baris. Komentar dihapus saat parsing dan tidak tersedia dalam struktur data yang dimuat.
Sumber Terkait
- YAML Formatter — Format dan percantik file YAML
- YAML vs JSON — Kapan menggunakan format yang mana
- YAML untuk Docker Compose — Pola YAML khusus Docker