Cấu hình YAML (.yaml)

YAML Tiêu chuẩn

YAML Ain't Markup Language (YAML) là định dạng tuần tự hóa dữ liệu chiếm ưu thế cho DevOps hiện đại, cơ sở hạ tầng đám mây (Kubernetes, Docker Compose) và tự động hóa CI/CD, nhấn mạnh tính dễ đọc của con người thông qua thụt lề khoảng trắng sạch sẽ.

Chuyển đổi YAML sang JSON

Trình chuyển đổi từ YAML sang JSON miễn phí trên trình duyệt. Chuyển đổi tệp ngay lập tức trên thiết bị của bạn.

Kiểm tra & Siêu dữ liệu

Các hệ điều hành và trình phân tích tệp nhận dạng tệp YAML bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

Chọn hoặc thả tệp vào đây

Chuyển đổi 100% riêng tư trong trình duyệt - tệp không bao giờ rời khỏi thiết bị của bạn

hoặc dán Ctrl+V
Cam kết bảo mật không truyền tải qua mạng: 0 byte được tải lên máy chủ bên ngoài. Toàn bộ quá trình xử lý diễn ra cục bộ trong hộp cát trình duyệt của bạn.

Chữ ký tiêu đề ở cấp độ Byte (Magic Bytes)

Các hệ điều hành và trình phân tích tệp nhận dạng tệp YAML bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

CHỮ KÝ HEX (OFFSET 0):

2D 2D 2D 0A

BIỂU DIỄN ASCII: ---\n

Tiêu chuẩn hóa: YAML 1.2.2 Specification

Thông số kỹ thuật

Kiến trúc ContainerIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
NénUncompressed text stream
Thứ tự byte EndiannessUTF-8 / Unicode text stream
Không gian màuN/A (Data Serialization)
Kênh & Cấu trúcMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Kích thước tối đaUnbounded document size (supports multi-document streams separated by '---')
Độ trong suốtNone
Truyền phát & Tăng dầnMulti-document streams allow sequential document-by-document processing

Ma trận so sánh kỹ thuật: YAML so với các đối thủ

Thuộc tính kỹ thuậtYAML (Hiện tại)JSONTOMLXML
Kiểu cú phápPhân cấp khoảng trắng thụt lềDấu ngoặc vuông và dấu ngoặc kép nghiêm ngặtBảng và cặp khóa=giá trịThẻ mở/đóng dài dòng
Hỗ trợ chú thíchNguyên bản (chú thích #)Không cho phép chú thíchNguyên bản (chú thích #)<!-- chú thích -->
Áp dụng trong DevOpsTiêu chuẩn phổ quát (Kubernetes, CI/CD)Tiêu chuẩn API phổ quátCấu hình gói Rust/PythonCấu hình kế thừa doanh nghiệp
Tái sử dụng dữ liệuMỏ neo nguyên bản (&) & Bí danh (*)Không có (trùng lặp thủ công)Không có (trùng lặp thủ công)Thực thể XML

Các chế độ hỏng hóc phổ biến & Hướng dẫn khôi phục Hex

Lỗi trình phân tích cú pháp: 'mapping values are not allowed here' hoặc lỗi thụt lề.

Nguyên nhân gốc rễ: Trộn lẫn dấu tab với khoảng trắng hoặc các cấp độ thụt lề không đồng đều.

Khắc phục: Chuyển đổi dấu tab thành khoảng trắng và xác thực cú pháp bằng Công cụ định dạng YAML của File2File.

Phân tích bảo mật & Các vectơ tấn công bộ phân tích cú pháp

Các trình phân tích cú pháp YAML hỗ trợ các thẻ kiểu tùy chỉnh (như 'yaml.load()' của PyYAML) trong lịch sử đã cho phép thực thi mã từ xa thông qua việc khởi tạo đối tượng tùy ý.

Các Véc-tơ Tấn công Đã biết

  • Thực thi mã tùy ý thông qua các thẻ giải tuần tự hóa đối tượng không an toàn (ví dụ: '!!python/object/apply').
  • Bom mở rộng thực thể (tương đương với tỷ tiếng cười sử dụng mỏ neo và bí danh YAML).
  • Các lỗ nhầm lẫn kiểu do phân tích cú pháp boolean và dấu thời gian ngầm định.

Thực tiễn Tốt nhất về Phòng thủ:

Nguồn gốc lịch sử & Các cột mốc

2021Bản sửa đổi YAML 1.2.2 được xuất bản, tinh chỉnh khả năng tương thích JSON và các định nghĩa ngữ pháp chính thức.
2009YAML 1.2 chuẩn hóa YAML như một tập siêu nghiêm ngặt của JSON, nghĩa là mọi JSON hợp lệ đều là YAML hợp lệ.
2001Clark Evans, Ingy döt Net và Oren Ben-Kiki tạo ra YAML như một sự thay thế thân thiện với con người cho XML.

Ưu điểm & Lợi ích chính

  • Tiêu chuẩn không thể bàn cãi cho cơ sở hạ tầng đám mây hiện đại: được sử dụng phổ biến trong các bản kê khai Kubernetes, Docker Compose và GitHub Actions.
  • Cú pháp sạch sẽ, dễ đọc: loại bỏ sự lộn xộn của dấu ngoặc nhọn, dấu ngoặc vuông và dấu ngoặc kép thông qua việc thụt lề trực quan.
  • Hỗ trợ các tham chiếu và mỏ neo (&anchor / *anchor) để tái sử dụng các khối cấu hình được lặp lại mà không bị trùng lặp.

Hạn chế & Nhược điểm kỹ thuật

  • Nhạy cảm với khoảng trắng: một dấu tab vô tình hoặc một khoảng trắng thừa duy nhất có thể làm hỏng phân cấp tài liệu hoặc gây ra lỗi phân tích cú pháp.
  • Các lỗi chuyển đổi kiểu khét tiếng: các từ không có trong dấu ngoặc kép như 'no', 'on', 'yes' hoặc mã quốc gia ('NO' cho Na-uy) có thể âm thầm trở thành boolean.
  • Tốc độ phân tích cú pháp chậm hơn đáng kể so với các định dạng nhị phân hoặc JSON nghiêm ngặt.

Thông tin kỹ thuật thú vị

  • YAML ban đầu là viết tắt của 'Yet Another Markup Language', nhưng đã được đổi tên một cách hài hước thành từ viết tắt đệ quy 'YAML Ain't Markup Language' để nhấn mạnh việc tuần tự hóa dữ liệu.
  • Cái gọi là 'Vấn đề Na-uy' (Norway Problem) là một lỗi lập trình nổi tiếng trong đó mã quốc gia 'NO' trong tệp YAML được phân tích cú pháp thành giá trị boolean 'false'.
  • Mọi tệp JSON hợp lệ trên thế giới đồng thời cũng là một tệp YAML hợp lệ 100%.

Các câu hỏi kỹ thuật thường gặp

YAML dùng để làm gì?

YAML là ngôn ngữ cấu hình chính cho điện toán đám mây, việc triển khai cụm Kubernetes, các tệp Docker Compose, quy trình làm việc của GitHub Actions và cài đặt phần mềm.

Tôi có thể sử dụng các khoảng tab trong tệp YAML không?

Không. Đặc tả YAML chính thức nghiêm cấm việc sử dụng các ký tự tab để thụt lề; bạn phải luôn sử dụng khoảng trắng (thường là 2 khoảng trắng cho mỗi cấp độ).

Làm thế nào để chuyển đổi YAML sang JSON?

Bạn có thể chuyển đổi các tệp YAML thành JSON sạch sẽ, đã được kiểm tra tính hợp lệ chỉ bằng một cú nhấp chuột bằng cách sử dụng File2File.app trực tiếp trong trình duyệt web của bạn với tính bảo mật hoàn toàn.