YAML ( YAML Ain’t Markup Language ) เป็นรูปแบบการเขียนข้อมูลที่เน้นให้ “มนุษย์อ่านง่าย” และเป็นที่นิยมอย่างมากในการเขียนไฟล์ Configuration เช่น Docker, Kubernetes หรือ Ansible
🏗️ โครงสร้างพื้นฐานของ YAML
กฎเหล็กที่สำคัญที่สุดของ YAML คือ “การย่อหน้า ( Indentation )” ครับ เราจะใช้ Space ( ช่องว่าง ) แทนการใช้ปีกกา { } หรือ Tag < > แบบใน JSON หรือ XML
- Key-Value Pairs
ข้อมูลพื้นฐานจะอยู่ในรูปkey: valueโดยต้องมีช่องว่างหลังเครื่องหมายโคลอน:เสมอserver_name: production_server port: 8080 enabled: true
- Lists ( Arrays )
การสร้างรายการจะใช้เครื่องหมายขีดกลาง-นำหน้าtools: - Docker - Nginx - Terraform
- Nested Objects ( Objects ใน Object )
ใช้การย่อหน้าเพื่อบอกว่าข้อมูลชุดนี้เป็นส่วนหนึ่งของหัวข้อด้านบนdatabase: client: postgresql connection: host: 127.0.0.1 user: admin
💡 เทคนิคการเขียนขั้นสูง
การเขียนข้อความยาว ๆ ( Multi-line Strings )
หากคุณมีข้อความยาว ๆ เช่น สคริปต์หรือคำบรรยาย คุณสามารถเลือกใช้สัญลักษณ์ได้ 2 แบบ
|( Literal ): เก็บรูปแบบการขึ้นบรรทัดใหม่ไว้ทั้งหมด>( Folded ): เปลี่ยนการขึ้นบรรทัดใหม่ให้เป็นช่องว่าง ( ยกเว้นบรรทัดสุดท้าย )
description: |
บรรทัดที่ 1
บรรทัดที่ 2 (จะยังคงอยู่แบบนี้)
summary: >
ข้อความที่พิมพ์แยกบรรทัดกันแบบนี้
จะถูกรวมเป็นบรรทัดเดียวเมื่ออ่านค่า
⚠️ ข้อควรระวัง ( Best Practices )
- ห้ามใช้ Tab: ให้ใช้การเคาะ Space ( ปกติคือ 2 ช่อง ) เท่านั้น เพราะตัวอ่าน YAML ส่วนใหญ่จะ Error ถ้าเจอ Tab
- Data Types: *
true/falseไม่ต้องมีเครื่องหมายคำพูด- ตัวเลขไม่ต้องมีเครื่องหมายคำพูด
- ถ้าข้อความมีอักขระพิเศษ เช่น
:หรือ#ให้ครอบด้วยเครื่องหมายคำพูด" "หรือ' '
- Comments: ใช้เครื่องหมาย
#สำหรับการเขียนคอมเมนต์
🛠️ ตัวอย่างการใช้งานจริง ( Nginx Config แบบ YAML )
การเก็บค่า Config ไว้ในรูปแบบ YAML ( เช่นใน Docker Compose ) จะช่วยให้คุณ Backup และไล่ดูประวัติการแก้ไขได้ง่ายขึ้นครับ
services:
web_server:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./config/nginx.conf:/etc/nginx/nginx.conf:ro
- ./html:/usr/share/nginx/html
restart: always
Pro Tip: ก่อนจะนำไฟล์ YAML ไปใช้งานจริง แนะนำให้นำไปวางใน YAML Lint เพื่อตรวจสอบว่าโครงสร้างการย่อหน้าถูกต้องหรือไม่ครับ
อ่านเพิ่มเติม