alltools.one
YAML
2025-07-06
8 min
alltools.one Team
YAMLSyntaxConfigurationDevOps

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

Published on 2025-07-06
YAML Syntax Tutorial: A Practical Introduction | alltools.one