Định Dạng YAML
Tại sao nên định dạng tệp YAML?
YAML cực kỳ nhạy cảm với các vấn đề thụt lề — một khoảng trắng thừa có thể gây lỗi phân tích hoặc hỏng dữ liệu thầm lặng. Kubernetes, Docker Compose, GitHub Actions và Ansible dùng YAML cho tệp cấu hình, và một lỗi định dạng có thể chặn toàn bộ triển khai.
Chuẩn hóa thụt lề
Chuẩn hóa thụt lề hỗn hợp thành định dạng 2 khoảng trắng nhất quán trong toàn bộ tài liệu
Xác thực cú pháp
Xác định lỗi thụt lề, lẫn lộn tab/khoảng trắng và vấn đề cấu trúc
Anchor và Alias
Hỗ trợ đầy đủ anchor YAML (&) và alias (*) để tái sử dụng tài liệu
Định dạng YAML trong 3 bước
Dán YAML
Dán manifest Kubernetes, workflow GitHub Actions hoặc tệp cấu hình YAML
Định dạng và xác thực
Công cụ xác thực cú pháp và tự động định dạng lại với thụt lề nhất quán
Sao chép và triển khai
Sao chép YAML đã định dạng vào tệp, pipeline CI hoặc công cụ triển khai
Các trường hợp sử dụng định dạng YAML
Manifest Kubernetes
Định dạng tệp Deployment, Service và ConfigMap YAML trước khi áp dụng vào cluster
Pipeline CI/CD
Xác thực workflow GitHub Actions, GitLab CI và CircleCI để ngăn ngừa lỗi pipeline
Playbook Ansible
Định dạng và xác thực task, biến và inventory Ansible
Docker Compose
Kiểm tra docker-compose.yml được định dạng đúng trước khi docker compose up
Các thực hành tốt nhất cho YAML
✓ Dùng khoảng trắng, không dùng tab
Đặc tả YAML cấm ký tự tab để thụt lề. Cấu hình trình soạn thảo chèn khoảng trắng khi nhấn Tab trong tệp YAML.
✓ Dùng dấu ngoặc kép cho ký tự đặc biệt
Chuỗi chứa : # [ ] { } hoặc bắt đầu bằng ký tự đặc biệt phải đặt trong dấu ngoặc kép.
✓ Dùng anchor để giảm lặp lại
Anchor YAML (&tên) và alias (*tên) cho phép tái sử dụng giá trị trong tài liệu.
✓ Lint trước khi commit
Chạy yamllint hoặc dùng công cụ định dạng này trong hook pre-commit để phát hiện sớm vấn đề định dạng.
❓ Câu hỏi thường gặp
Tại sao YAML không hoạt động với tab thay vì khoảng trắng?
Đặc tả YAML cấm ký tự tab để thụt lề vì các trình soạn thảo khác nhau hiển thị tab với độ rộng khác nhau. Khoảng trắng cung cấp thụt lề nhất quán mà tất cả bộ phân tích YAML hiểu giống nhau.
Anchor YAML (&) và alias (*) làm gì?
Anchor xác định khối có thể tái sử dụng với &tênanchor; alias tham chiếu nó với *tênanchor. Cho phép định nghĩa một giá trị một lần và dùng nhiều nơi.
Sự khác biệt giữa YAML và JSON là gì?
YAML là superset của JSON — JSON hợp lệ cũng là YAML hợp lệ. YAML thêm hỗ trợ chú thích, anchor, chuỗi nhiều dòng và cú pháp dễ đọc hơn.
Khi nào nên chọn YAML thay vì TOML cho cấu hình?
YAML có hỗ trợ công cụ rộng hơn (Kubernetes, Ansible, hầu hết hệ thống CI) và có thể diễn đạt cấu trúc lồng phức tạp một cách súc tích. Trong cấu hình DevOps, YAML là tiêu chuẩn.