YAML telah mendapatkan banyak popularitas selama beberapa tahun terakhir karena menjadi bagian dari alat, teknologi, dan proses DevOps yang penting seperti Ansible, Kubernetes, pipeline CI/CD, dan sebagainya.
Kami telah membahas banyak tutorial tentang Ansible dan Kubernetes. Saya berpikir untuk membahas hal-hal penting YAML sehingga Anda harus sadar untuk bekerja lebih lancar dengan konfigurasi alat DevOps Anda.
Apa itu YAML?
YAML adalah singkatan dari "YAML Bukan Bahasa Markup" awalnya adalah akronim untuk 'Yet Another Markup Language'. YAML adalah bahasa “serialisasi data” dan pada dasarnya merupakan format data terstruktur yang dapat dibaca manusia.
Hal ini dirancang untuk membaca dan menulis ramah. Fitur serialisasi objek YAML menampilkan dirinya sebagai alternatif praktis untuk JSON. YAML adalah superset dari JSON dengan penggunaan pelingkupan berbasis lekukan untuk menunjukkan struktur seperti Python.
Berikut ini contoh contoh YAML:
---
Student-ID: 314159
First-Name: Linus
Last-Name: Torvalds
Phone-numbers:
- 281.555.7777
- 832.676.8888
- 937.996.9999
Addresses:
- Street: 123 Main St.
- City: Houston
- State: Tx
---
Aturan dasar YAML yang harus selalu Anda ingat
Jika Anda tidak ingin melihat kesalahan berulang saat mengurai file YAML, Anda harus selalu mengingat hal berikut saat mengerjakan YAML:
- Tab TIDAK diperbolehkan di YAML. Anda harus menggunakan spasi untuk indentasi.
- Meskipun jumlah spasi tidak menjadi masalah selama lekukan simpul anak lebih banyak daripada induknya, ini adalah praktik yang baik untuk menjaga jumlah spasi yang sama.
- Harus ada spasi di antara berbagai elemen YAML (dijelaskan nanti).
- YAML peka huruf besar/kecil.
- File YAML harus diakhiri dengan ekstensi seperti
.yaml
atau.yml
. - YAML memungkinkan pengkodean UTF-8, UTF-16, dan UTF-32.
Mari kita pahami sintaks YAML sekarang.
Elemen file YAML:Sintaks dasar
File YAML digunakan untuk mendeskripsikan data. Dalam file YAML, kontennya adalah tentang kumpulan pasangan nilai kunci di mana nilainya bisa apa saja mulai dari string hingga pohon.
Mari kita memahaminya dengan sebuah contoh. Ini adalah file manifes layanan Kubernetes.
kind: Service
metadata:
name: web-app-svc
spec:
type: NodePort
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
selector:
app: web-app
Dapat dijelaskan sendiri bahwa ini adalah kumpulan elemen pasangan nilai kunci:Name: Value
.
Seperti yang Anda lihat dari file di atas, file YAML dibuat dari sejumlah elemen berbeda. Bersama-sama, mereka dapat digunakan untuk menggambarkan berbagai macam struktur.
1. Spasi atau lekukan
Di YAML, Anda membuat indentasi dengan spasi, bukan tab. Dan HARUS ada spasi di antara elemen.
Spesifikasi yang benar:
Kind:Service
Spesifikasi salah:
Kind:Service
Karena tidak ada spasi setelah titik dua pada pernyataan di atas!
2. Komentar di YAML
Komentar dapat ditentukan dengan menempatkan hash di depan item '#
'. Komentar dapat dibuat di awal baris di mana saja dalam baris.
Jika Anda membuka file konfigurasi YAML kami, kami memiliki tiga komentar sebaris seperti "#service port" dll.
3. Skalar (nilai kunci)
Skalar adalah string dan angka yang membentuk data pada halaman. Secara sederhana mereka adalah pasangan nilai kunci.
kind: Service
metadata:
name: web-app-svc
4. Koleksi &Daftar
Elemen atau anggota daftar dan koleksi adalah garis yang dimulai pada tingkat lekukan yang sama, dimulai dengan tanda hubung diikuti dengan spasi.
- web-app-prod
- prod-deployments
- prom-monitored
Ini adalah daftar dasar dengan setiap item dalam daftar ditempatkan di barisnya sendiri dengan tanda hubung pembuka.
5. Koleksi bersarang
Jika Anda ingin membuat urutan bersarang dengan item dan sub-item, Anda dapat melakukannya dengan menempatkan satu spasi sebelum setiap tanda hubung di sub-item.
-
- web-app-prod
- prod-deployments
- prom-monitored
-
- web-app-test
- staging-deployments
- not-monitored
6. Kamus
Kamus terdiri dari key: value
format dengan isi menjorok.
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort: 30012 #Node Port from the range - 30000-32767
Anda dapat menggabungkan dan mencampur koleksi daftar dan kamus seperti ini:
ports:
- port: 8080 #service port
targetPort: 8080 #Pod Port
nodePort:
- 30012
- 30013
- 30014
Ini adalah konsep YAML yang sangat mendasar tetapi penting bagi seorang insinyur DevOps.
Anda tidak memerlukan editor khusus untuk YAML. Editor teks favorit Anda seharusnya sudah mendukung YAML atau menggunakan plugin jika diperlukan.
Ada banyak hal yang bisa Anda gali lebih dalam dan pelajari. Untuk itu, Anda dapat selalu merujuk ke dokumentasi resmi YAML.
Ingin menjadi sysadmin atau DevOps yang lebih baik? Jadilah anggota Buku Pegangan Linux hari ini.