Chuyển tới nội dung

1. YAML (Ain’t Markup Language) được sử dụng để biểu diễn dữ liệu dưới dạng text (giống XML, JSON …), file YAML lưu với phần mở rộng .yml hoặc .yaml nó dễ có vẻ dễ dọc so với con người hơn (so với XML, JSON). File .yml được sử dụng làm file cấu hình của nhiều ứng dụng như PHP, Docker …

Cùng một cách hiển thị danh sách máy chủ và thông tin của chúng.
Bên trái là cách biểu diễn của XML, ở giữa là dạng JSON, và cuối cùng là YAML

2. Trong YAML có 3 kiểu để biểu diễn giá trị.

Key Value Pair (Cặp khoá vs giá trị):
Dữ liệu được thể hiện bởi kiểu khoá và giá trị (key và value). Trong YAML, khóa và giá trị được phân tách bằng dấu hai chấm (:). Luôn phải có khoảng trắng theo sau dấu hai chấm.
Mảng trong YAML:
Các phần tử trong mảng sẽ được thể hiện bởi dấu gạch ngang ( – ). Cần có khoảng trắng trước mỗi mục. Số lượng khoảng trắng cần bằng nhau trước các phần tử của một mảng. Chúng ta hãy xem xét kỹ hơn về các dấu khoảng trắng trong YAML.
Ví dụ ở đây ta có một object là Banana. Trong đó có 3 thuộc tính là calories, fat và carbs.
Banana:
Calories: 105
Fat: 0.4g
Carbs: 27g

Lưu ý số lượng khoảng trắng trước mỗi thuộc tính sẽ chỉ ra mối quan hệ cha con. Như ở đây, trước 3 thuộc tính đó có cùng số khoảng trắng, nghĩa là 3 thuộc tính đó nằm trong Banana. Nhưng điều gì sẽ xảy ra nếu chúng ta có thêm không gian cho fat và carbs.
Banana:
Calories: 105
Fat: 0.4g
Carbs: 27g

Lúc này fat và crabs sẽ là con của thuộc tính calories và calories là thuộc tính con của Banana. Vì vậy, số lượng khoảng trắng trong YAML rất quan trọng. Đôi lúc bạn có thể chạy script bị báo lỗi nếu nhầm khoảng trắng với dấu tab.
Dạng dict trong YAML:
Dạng này chỉ cần biểu diễn khoảng trắng trước các thuộc tính của object. Điểm khác biệt của dạng Dict và Array là các thuộc tính liệt kê dạng dict thì không có thứ tự. Trong khi Array thì ngược lại. Nên là ví dụ bạn khai báo như:
Tasks:
- install httpd
- start httpd

Sẽ khác với
Tasks:
- start httpd
- install httpd

Ví dụ trên được viết theo dạng Array, tức ansible sẽ đọc tuần tự từ trên xuống. Như vậy nếu start httpd trước khi install httpd thì sẽ xảy ra lỗi vì hệ thống không tìm thấy service httpd để start.

3. Cú pháp yaml

Chú thích trong YAML
Các chú thích viết bắt đầu bằng #.

Giá trị một đối tượng
Được biểu diễn bằng viết trên một dòng key:value
Ví dụ YAML
product: Laptop ABC
price: 333

Đối tượng, chứa các đối tượng con
Khi một đối tượng cha chứa đối tượng con, thì đối tượng đó không được chứa giá trị và các đối tượng con biểu diễn bằng các dòng key:value thụt đầu dòng 2 khoẳng trắng so với phần tử cha.
product: Laptop ABC
price: 333
specifications:
os: Windows 10
hdd: 500 GB

Đối tượng mảng
Sau tên mảng là :, các phần tử mảng biểu diễn trên mỗi dòng, thụt 2 khoảng trắng và bắt đầu bằng –
product: Laptop ABC
price: 333
specifications:
os: Windows 10
hdd: 500 GB
ram:
- branch: XYZ
- speed: XXX

Đối tượng văn bản
Dữ liệu văn bản dài, có thể dùng ký hiệu > để nó tự động gộm thành 1
data: >
Dòng chữ 1
Dòng chữ 2

Kết quả đầu ra: Dòng chữ 1 Dòng chữ 2

Ký hiệu | Bao quanh 1 khối những vẫn giữ việc xuống dòng và loại bỏ dấu space ở đâu và ở cuối
data: |
Dòng chữ 1
Dòng chữ 2

Kết quả đầu ra:
Dòng chữ 1
Dòng chữ 2