{"id":34915,"date":"2024-08-23T15:46:34","date_gmt":"2024-08-23T08:46:34","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/23\/a-yaml-syntax-reference\/"},"modified":"2024-08-23T15:46:34","modified_gmt":"2024-08-23T08:46:34","slug":"a-yaml-syntax-reference","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/08\/23\/a-yaml-syntax-reference\/","title":{"rendered":"Tham kh\u1ea3o c\u00fa ph\u00e1p YAML"},"content":{"rendered":"<p>YAML l\u00e0 ng\u00f4n ng\u1eef trao \u0111\u1ed5i d\u1eef li\u1ec7u th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh. N\u00f3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh nh\u01b0&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/applications\/configuration-management\/ansible\/\">Ansible<\/a>&nbsp;v\u00e0 c\u00e1c c\u00f4ng c\u1ee5 \u0111i\u1ec1u ph\u1ed1i container, nh\u01b0&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/beginners-guide-to-kubernetes-part-1-introduction\/\">Kubernetes<\/a>&nbsp;. YAML 1.2 l\u00e0 si\u00eau t\u1eadp h\u1ee3p c\u1ee7a JSON v\u00e0 c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng v\u1edbi c\u00e1c ki\u1ec3u d\u1eef li\u1ec7u t\u00f9y ch\u1ec9nh. V\u00ec YAML r\u1ea5t ph\u1ed5 bi\u1ebfn v\u1edbi c\u00e1c b\u1ea3n d\u1ef1ng t\u1ef1 \u0111\u1ed9ng v\u00e0&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/introduction-ci-cd\/\">ph\u00e2n ph\u1ed1i li\u00ean t\u1ee5c<\/a>&nbsp;, b\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y c\u00e1c t\u1ec7p YAML \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng th\u00f4ng qua nhi\u1ec1u kho l\u01b0u tr\u1eef GitHub c\u00f4ng khai. H\u01b0\u1edbng d\u1eabn tham kh\u1ea3o n\u00e0y \u0111\u00f3ng vai tr\u00f2 l\u00e0 ph\u1ea7n gi\u1edbi thi\u1ec7u v\u1ec1 YAML v\u00e0 cung c\u1ea5p c\u00e1c v\u00ed d\u1ee5 \u0111\u1ec3 l\u00e0m r\u00f5 c\u00e1c \u0111\u1eb7c \u0111i\u1ec3m c\u1ee7a ng\u00f4n ng\u1eef.<\/p>\n<p>H\u00e3y xem x\u00e9t \u0111o\u1ea1n tr\u00edch v\u00ed d\u1ee5 t\u1eeb t\u1ec7p YAML c\u1ee7a Kubernetes:<\/p>\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nkind: Pod\nmetadata:\n name: apache-pod\n labels:\n   app: web<\/code><\/pre>\n<p>T\u1ec7p YAML n\u00e0y \u0111\u1ecbnh ngh\u0129a phi\u00ean b\u1ea3n API \u0111ang s\u1eed d\u1ee5ng, lo\u1ea1i t\u00e0i nguy\u00ean Kubernetes m\u00e0 b\u1ea1n mu\u1ed1n \u0111\u1ecbnh ngh\u0129a v\u00e0 si\u00eau d\u1eef li\u1ec7u v\u1ec1 t\u00e0i nguy\u00ean. B\u1ea1n kh\u00f4ng c\u1ea7n ph\u1ea3i quen thu\u1ed9c v\u1edbi Kubernetes \u0111\u1ec3 \u0111\u1ecdc qua c\u00e1c c\u1ea5u h\u00ecnh c\u1ee7a t\u1ec7p v\u00e0 v\u1eabn c\u00f3 th\u1ec3 hi\u1ec3u chung v\u1ec1 m\u1ee5c \u0111\u00edch c\u1ee7a t\u1eebng thi\u1ebft l\u1eadp. Kh\u1ea3 n\u0103ng \u0111\u1ecdc hi\u1ec3u c\u1ee7a con ng\u01b0\u1eddi \u0111\u01b0\u1ee3c coi l\u00e0 m\u1ed9t trong nh\u1eefng l\u1ee3i th\u1ebf c\u1ee7a YAML so v\u1edbi c\u00e1c \u0111\u1ecbnh d\u1ea1ng nh\u01b0 XML ho\u1eb7c JSON.<\/p>\n<h2 id=\"getting-started-with-yaml\">B\u1eaft \u0111\u1ea7u v\u1edbi YAML<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#getting-started-with-yaml\"><\/a><\/h2>\n<p>YAML ho\u1ea1t \u0111\u1ed9ng tr\u00ean nhi\u1ec1u h\u1ec7 \u0111i\u1ec1u h\u00e0nh, m\u00f4i tr\u01b0\u1eddng \u1ea3o v\u00e0 n\u1ec1n t\u1ea3ng d\u1eef li\u1ec7u. N\u00f3 th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng nh\u1ea5t \u0111\u1ec3 ki\u1ec3m so\u00e1t c\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a h\u1ec7 th\u1ed1ng. V\u00ed d\u1ee5, b\u1ea1n c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/kubernetes\/\">GitHub Actions<\/a>&nbsp;b\u1eb1ng YAML. Si\u00eau d\u1eef li\u1ec7u b\u1ea1n \u0111\u1ecbnh ngh\u0129a trong t\u1ec7p YAML c\u1ee7a GitHub Actions x\u00e1c \u0111\u1ecbnh c\u00e1c \u0111\u1ea7u v\u00e0o v\u00e0 \u0111\u1ea7u ra c\u1ea7n thi\u1ebft \u0111\u1ec3 ho\u00e0n th\u00e0nh c\u00e1c t\u00e1c v\u1ee5 trong kho l\u01b0u tr\u1eef GitHub c\u1ee7a b\u1ea1n.<\/p>\n<p>B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng YAML \u0111\u1ec3 trao \u0111\u1ed5i d\u1eef li\u1ec7u. B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng YAML l\u00e0m \u0111\u1ecbnh d\u1ea1ng d\u1eef li\u1ec7u \u0111\u1ec3 truy\u1ec1n h\u00f3a \u0111\u01a1n, \u0111\u1ec3 ghi l\u1ea1i tr\u1ea1ng th\u00e1i t\u1ee9c th\u1eddi c\u1ee7a tr\u00f2 ch\u01a1i k\u00e9o d\u00e0i ho\u1eb7c \u0111\u1ec3 giao ti\u1ebfp gi\u1eefa c\u00e1c h\u1ec7 th\u1ed1ng con trong m\u00e1y m\u00f3c v\u1eadt l\u00fd ph\u1ee9c t\u1ea1p.<\/p>\n<h3 id=\"three-basic-rules\">Ba quy t\u1eafc c\u01a1 b\u1ea3n<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#three-basic-rules\"><\/a><\/h3>\n<p>B\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng YAML v\u1edbi m\u1ed9t v\u00e0i quy t\u1eafc c\u01a1 b\u1ea3n. \u0110\u1ec3 b\u1eaft \u0111\u1ea7u, h\u00e3y t\u1eadp trung v\u00e0o ba l\u0129nh v\u1ef1c sau:<\/p>\n<ul>\n<li>th\u1ee5t l\u1ec1<\/li>\n<li>d\u1ea5u hai ch\u1ea5m<\/li>\n<li>d\u1ea5u g\u1ea1ch ngang<\/li>\n<\/ul>\n<h4 id=\"indentation\">th\u1ee5t l\u1ec1<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#indentation\"><\/a><\/h4>\n<p>YAML th\u1ec3 hi\u1ec7n d\u1eef li\u1ec7u trong c\u00e1c m\u1ed1i quan h\u1ec7 ph\u00e2n c\u1ea5p th\u00f4ng qua th\u1ee5t l\u1ec1. M\u1ed9t s\u1ed1 k\u00fd t\u1ef1 tr\u1ed1ng c\u1ed1 \u0111\u1ecbnh \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 th\u1ee5t l\u1ec1. H\u00e3y xem t\u1ec7p YAML GitHub Actions m\u1eabu sau:<\/p>\n<pre class=\"wp-block-code\"><code>...\njobs:\n  blueberry:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions\/checkout@v2\n    - name: Set up Python\n...<\/code><\/pre>\n<p>Th\u1ee5t l\u1ec1 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong t\u1ec7p v\u00ed d\u1ee5 cho th\u1ea5y r\u1eb1ng&nbsp;<code>runs-on<\/code>, v\u00e0&nbsp;<code>steps<\/code>l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a c\u00f9ng m\u1ed9t&nbsp;<em>kh\u1ed1i<\/em>&nbsp;. \u0110\u00e2y l\u00e0 t\u00edn hi\u1ec7u c\u00fa ph\u00e1p cho th\u1ea5y c\u1ea3 hai \u0111\u1ec1u l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a c\u00f9ng m\u1ed9t&nbsp;<em>ph\u1ea1m vi<\/em>&nbsp;. Theo quy \u01b0\u1edbc, hai kho\u1ea3ng tr\u1eafng th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng khi c\u1ea7n th\u1ee5t l\u1ec1. Kh\u00f4ng n\u00ean s\u1eed d\u1ee5ng tab \u0111\u1ec3 th\u1ee5t l\u1ec1.<\/p>\n<h4 id=\"colons\">D\u1ea5u hai ch\u1ea5m<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#colons\"><\/a><\/h4>\n<p>D\u1ea5u hai ch\u1ea5m ph\u00e2n t\u00e1ch kh\u00f3a v\u00e0 gi\u00e1 tr\u1ecb c\u1ee7a ch\u00fang. \u1ede c\u1ea5p \u0111\u1ed9 ch\u00ednh th\u1ee9c, YAML ch\u1ec9 \u0111\u1ecbnh r\u1eb1ng m\u1ed9t s\u1ed1 kho\u1ea3ng tr\u1eafng t\u00f9y \u00fd c\u00f3 th\u1ec3 theo sau d\u1ea5u hai ch\u1ea5m. Tuy nhi\u00ean, theo quy \u01b0\u1edbc, m\u1ed9t kho\u1ea3ng tr\u1eafng duy nh\u1ea5t n\u00ean \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng sau d\u1ea5u hai ch\u1ea5m. V\u00ed d\u1ee5:<\/p>\n<pre class=\"wp-block-code\"><code>...\n    runs-on: ubuntu-latest\n...<\/code><\/pre>\n<h4 id=\"dashes\">D\u1ea5u g\u1ea1ch ngang<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#dashes\"><\/a><\/h4>\n<p>D\u1ea5u g\u1ea1ch ngang (&nbsp;<code>-<\/code>) \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 bi\u1ec3u th\u1ecb m\u1ed9t danh s\u00e1ch. V\u00ed d\u1ee5 sau \u0111\u01b0\u1ee3c l\u1ea5y t\u1eeb&nbsp;<a href=\"https:\/\/github.com\/linode\/linode-api-docs\/\" target=\"_blank\" rel=\"noreferrer noopener\">API v4 c\u1ee7a Linode<\/a>&nbsp;, s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/github.com\/OAI\/OpenAPI-Specification\" target=\"_blank\" rel=\"noreferrer noopener\">th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt OpenAPI 3<\/a>&nbsp;.<\/p>\n<pre class=\"wp-block-code\"><code>...\nrequestBody:\ndescription: Information about the OAuth Client to create.\ncontent:\n    application\/json:\n    schema:\n        required:\n        - label\n        - redirect_uri\n...<\/code><\/pre>\n<p>Danh s\u00e1ch n\u00e0y&nbsp;<code>required<\/code>ch\u1ec9 \u0111\u1ecbnh c\u00e1c thu\u1ed9c t\u00ednh b\u1eaft bu\u1ed9c c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng. Trong v\u00ed d\u1ee5, c\u00e1c thu\u1ed9c t\u00ednh b\u1eaft bu\u1ed9c n\u00e0y l\u00e0&nbsp;<code>label<\/code>v\u00e0&nbsp;<code>redirect_uri<\/code>. C\u00e1c ph\u1ea7n ti\u1ebfp theo bao g\u1ed3m nhi\u1ec1u v\u00ed d\u1ee5 h\u01a1n v\u1ec1 th\u1ee5t l\u1ec1, d\u1ea5u hai ch\u1ea5m v\u00e0 d\u1ea5u g\u1ea1ch ngang.<\/p>\n<h2 id=\"yaml-basic-data-types\">C\u00e1c ki\u1ec3u d\u1eef li\u1ec7u c\u01a1 b\u1ea3n c\u1ee7a YAML<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#yaml-basic-data-types\"><\/a><\/h2>\n<p>YAML c\u00f3 ba ki\u1ec3u d\u1eef li\u1ec7u c\u01a1 b\u1ea3n:<\/p>\n<ul>\n<li>s\u1ed1 v\u00f4 h\u01b0\u1edbng<\/li>\n<li>danh s\u00e1ch ho\u1eb7c tr\u00ecnh t\u1ef1<\/li>\n<li>m\u1ea3ng li\u00ean k\u1ebft ho\u1eb7c t\u1eeb \u0111i\u1ec3n<\/li>\n<\/ul>\n<h3 id=\"scalars\">S\u1ed1 v\u00f4 h\u01b0\u1edbng<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#scalars\"><\/a><\/h3>\n<p>M\u1ed9t s\u1ed1 v\u00f4 h\u01b0\u1edbng c\u00f3 th\u1ec3 l\u00e0 m\u1ed9t gi\u00e1 tr\u1ecb s\u1ed1, m\u1ed9t chu\u1ed7i v\u0103n b\u1ea3n ho\u1eb7c m\u1ed9t gi\u00e1 tr\u1ecb boolean nh\u01b0&nbsp;<code>true<\/code>ho\u1eb7c&nbsp;<code>false<\/code>. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 bi\u1ec3u th\u1ecb m\u1ed9t&nbsp;<code>null<\/code>gi\u00e1 tr\u1ecb, \u0111\u01b0\u1ee3c di\u1ec5n gi\u1ea3i l\u00e0&nbsp;<code>absent<\/code>ho\u1eb7c&nbsp;<code>unknown<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>...\nproperties:\n  address:\n    type: string\n    format: ip\n    description: \"The IP address.\"\n    example: 97.107.143.141\n...<\/code><\/pre>\n<p>V\u00ed d\u1ee5 YAML s\u1eed d\u1ee5ng m\u1ed9t s\u1ed1 gi\u00e1 tr\u1ecb v\u00f4 h\u01b0\u1edbng cho&nbsp;<code>address<\/code>thu\u1ed9c t\u00ednh. L\u01b0u \u00fd r\u1eb1ng&nbsp;<code>description<\/code>thu\u1ed9c t\u00ednh s\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c k\u00e9p quanh chu\u1ed7i, trong khi thu\u1ed9c&nbsp;<code>format<\/code>t\u00ednh th\u00ec kh\u00f4ng. S\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c k\u00e9p \u0111\u01a1n&nbsp;<code>' '<\/code>ho\u1eb7c k\u00e9p&nbsp;<code>\" \"<\/code>cho ph\u00e9p b\u1ea1n bao g\u1ed3m c\u00e1c k\u00fd t\u1ef1 YAML \u0111\u01b0\u1ee3c d\u00e0nh ri\u00eang \u0111\u1eb7c bi\u1ec7t trong chu\u1ed7i c\u1ee7a m\u00ecnh m\u00e0 kh\u00f4ng g\u1eb7p ph\u1ea3i l\u1ed7i ph\u00e2n t\u00edch c\u00fa ph\u00e1p.<\/p>\n<h3 id=\"lists\">Danh s\u00e1ch<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#lists\"><\/a><\/h3>\n<p>\u0110\u1ec3 \u0111\u1ecbnh ngh\u0129a m\u1ed9t danh s\u00e1ch trong YAML, m\u1ed7i gi\u00e1 tr\u1ecb danh s\u00e1ch \u0111\u01b0\u1ee3c bi\u1ec3u th\u1ecb b\u1eb1ng d\u1ea5u g\u1ea1ch ngang m\u1edf&nbsp;<code>-<\/code>, kho\u1ea3ng tr\u1eafng v\u00e0 gi\u00e1 tr\u1ecb. Kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1eb7t b\u1ea5t k\u1ef3 gi\u00e1 tr\u1ecb n\u00e0o kh\u00e1c tr\u00ean c\u00f9ng m\u1ed9t d\u00f2ng.<\/p>\n<pre class=\"wp-block-code\"><code>...\nstatus:\n  type: string\n  enum:\n  - disabled\n  - pending\n  - ok\n  - problem\n...<\/code><\/pre>\n<p>\u0110o\u1ea1n m\u00e3 v\u00ed d\u1ee5 n\u00e0y \u0111\u1ecbnh ngh\u0129a c\u00e1c gi\u00e1 tr\u1ecb c\u00f3 th\u1ec3 c\u00f3 cho&nbsp;<code>status<\/code>thu\u1ed9c t\u00ednh b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng danh s\u00e1ch b\u00ean d\u01b0\u1edbi&nbsp;<code>enum<\/code>kh\u00f3a. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 l\u1ed3ng c\u00e1c danh s\u00e1ch c\u1ee7a m\u00ecnh khi c\u1ea7n. V\u00ed d\u1ee5:<\/p>\n<pre class=\"wp-block-code\"><code>security:\n  - personalAccessToken: &#91;]\n  - oauth:\n    - account:read_only<\/code><\/pre>\n<h3 id=\"dictionaries\">T\u1eeb \u0111i\u1ec3n<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#dictionaries\"><\/a><\/h3>\n<p>YAML h\u1ed7 tr\u1ee3&nbsp;<em>c\u00e1c m\u1ea3ng li\u00ean k\u1ebft<\/em>&nbsp;ho\u1eb7c&nbsp;<em>t\u1eeb \u0111i\u1ec3n<\/em>&nbsp;. Tr\u00ecnh b\u00e0y kh\u00f3a-gi\u00e1 tr\u1ecb c\u1ee7a t\u1ea5t c\u1ea3 c\u00e1c v\u00ed d\u1ee5 tr\u00ean th\u1ef1c t\u1ebf l\u00e0 m\u1ed9t t\u1eeb \u0111i\u1ec3n; v\u00ed&nbsp;<code>description<\/code>d\u1ee5, \u0111\u1ed1i v\u1edbi kh\u00f3a, gi\u00e1 tr\u1ecb l\u00e0&nbsp;<code>\"The IP address.\"<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>...\nproperties:\n  address:\n    type: string\n    format: ip\n    description: \"The IP address.\"\n    example: 97.107.143.141\n...<\/code><\/pre>\n<p>T\u1eeb \u0111i\u1ec3n \u0111\u1ea1t \u0111\u01b0\u1ee3c nhi\u1ec1u s\u1ee9c m\u1ea1nh khi k\u1ebft h\u1ee3p v\u1edbi c\u00e1c ki\u1ec3u d\u1eef li\u1ec7u kh\u00e1c. V\u00ed d\u1ee5, m\u1ed9t gi\u00e1 tr\u1ecb c\u00f3 th\u1ec3 l\u00e0 m\u1ed9t danh s\u00e1ch v\u00e0 c\u00e1c gi\u00e1 tr\u1ecb c\u1ee7a danh s\u00e1ch c\u00f3 th\u1ec3 l\u00e0 m\u1ed9t t\u1eeb \u0111i\u1ec3n kh\u00e1c.<\/p>\n<h2 id=\"comparing-yaml-with-other-data-formats\">So s\u00e1nh YAML v\u1edbi c\u00e1c \u0111\u1ecbnh d\u1ea1ng d\u1eef li\u1ec7u kh\u00e1c<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#comparing-yaml-with-other-data-formats\"><\/a><\/h2>\n<p>\u0110\u1ec3 hi\u1ec3u r\u00f5 YAML, b\u1ea1n n\u00ean so s\u00e1nh n\u00f3 v\u1edbi c\u00e1c \u0111\u1ecbnh d\u1ea1ng kh\u00e1c m\u00e0 b\u1ea1n c\u00f3 th\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n. C\u00e1c so s\u00e1nh trong c\u00e1c ph\u1ea7n ti\u1ebfp theo c\u0169ng gi\u00fap l\u00e0m n\u1ed5i b\u1eadt \u01b0u \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a t\u1eebng \u0111\u1ecbnh d\u1ea1ng. \u0110i\u1ec1u n\u00e0y c\u00f3 th\u1ec3 gi\u00fap b\u1ea1n t\u1eadn d\u1ee5ng t\u1ed1i \u0111a t\u1eebng \u0111\u1ecbnh d\u1ea1ng.<\/p>\n<h3 id=\"yaml-vs-json\">YAML so v\u1edbi JSON<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#yaml-vs-json\"><\/a><\/h3>\n<p>K\u00fd hi\u1ec7u \u0111\u1ed1i t\u01b0\u1ee3ng JavaScript (JSON) l\u00e0 m\u1ed9t \u0111\u1ecbnh d\u1ea1ng t\u1ec7p chu\u1ea9n m\u1edf. N\u00f3 th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng v\u1edbi c\u1ea5u h\u00ecnh tr\u00ecnh duy\u1ec7t ho\u1eb7c giao ti\u1ebfp.<\/p>\n<p>N\u1ed9i dung JSON&nbsp;<em>l\u00e0<\/em>&nbsp;n\u1ed9i dung YAML. YAML l\u00e0 si\u00eau t\u1eadp c\u1ee7a JSON. Tuy nhi\u00ean, c\u00fa ph\u00e1p c\u1ee7a YAML tho\u1ea3i m\u00e1i h\u01a1n.<\/p>\n<ul>\n<li>B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng kh\u00f3a chu\u1ed7i kh\u00f4ng c\u00f3 d\u1ea5u ngo\u1eb7c k\u00e9p v\u1edbi YAML, \u0111i\u1ec1u m\u00e0 JSON kh\u00f4ng cho ph\u00e9p. YAML cho ph\u00e9p s\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c \u0111\u01a1n, thay v\u00ec d\u1ea5u ngo\u1eb7c k\u00e9p m\u00e0 JSON y\u00eau c\u1ea7u \u0111\u1ed1i v\u1edbi chu\u1ed7i.<\/li>\n<li>B\u1ea1n c\u00f3 th\u1ec3 th\u00eam ch\u00fa th\u00edch v\u00e0o t\u1ec7p YAML c\u1ee7a m\u00ecnh. JSON kh\u00f4ng h\u1ed7 tr\u1ee3 ch\u00fa th\u00edch.<\/li>\n<li>YAML c\u00f3 c\u00fa ph\u00e1p \u0111\u1eb7c bi\u1ec7t \u0111\u1ec3 \u0111\u1ecbnh ngh\u0129a c\u00e1c ki\u1ec3u d\u1eef li\u1ec7u t\u00f9y ch\u1ec9nh. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 b\u1ea1n c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng YAML v\u01b0\u1ee3t ra ngo\u00e0i \u0111\u1ecbnh ngh\u0129a c\u01a1 s\u1edf c\u1ee7a n\u00f3.<\/li>\n<li>YAML c\u00f2n v\u01b0\u1ee3t xa JSON trong vi\u1ec7c h\u1ed7 tr\u1ee3 c\u00e1c neo, b\u00ed danh, ch\u1ec9 th\u1ecb v\u00e0 kh\u00f3a h\u1ee3p nh\u1ea5t.<\/li>\n<\/ul>\n<h3 id=\"yaml-vs-xml\">YAML so v\u1edbi XML<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#yaml-vs-xml\"><\/a><\/h3>\n<p>B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng YAML v\u00e0 XML \u0111\u1ec3 th\u1ec3 hi\u1ec7n c\u00f9ng m\u1ed9t d\u1eef li\u1ec7u. V\u00ec l\u00fd do n\u00e0y, m\u1ed9t s\u1ed1 \u1ee9ng d\u1ee5ng h\u1ed7 tr\u1ee3 c\u1ea3 hai ng\u00f4n ng\u1eef. Tuy nhi\u00ean, v\u1ec1 m\u1eb7t c\u00fa ph\u00e1p, YAML v\u00e0 XML r\u1ea5t kh\u00e1c nhau.<\/p>\n<p>Nh\u00ecn chung, XML d\u00e0i d\u00f2ng h\u01a1n, nh\u01b0ng c\u0169ng d\u1ec5 s\u1eed d\u1ee5ng h\u01a1n khi th\u1ec3 hi\u1ec7n n\u1ed9i dung gi\u1ed1ng t\u00e0i li\u1ec7u. YAML ng\u1eafn g\u1ecdn h\u01a1n. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 v\u00ed d\u1ee5 v\u1ec1 c\u00e1ch m\u1ed7i lo\u1ea1i c\u00f3 th\u1ec3 th\u1ec3 hi\u1ec7n c\u00f9ng m\u1ed9t d\u1eef li\u1ec7u:<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\u201d1.0\u201d?&gt;\n&lt;catalogue&gt;\n  &lt;book&gt;\n    &lt;author&gt;Homer&lt;\/author&gt;\n    &lt;title&gt;Illiad&lt;\/title&gt;\n    &lt;genre&gt;epic poem&lt;\/genre&gt;\n  &lt;\/book&gt;\n  &lt;book&gt;\n    &lt;author&gt;William Gilbert&lt;\/author&gt;\n    &lt;title&gt;On the Magnet and Magnetic Bodies ...&lt;\/title&gt;\n    &lt;genre&gt;natural philosophy&lt;\/genre&gt;\n  &lt;\/book&gt;\n&lt;\/catalogue&gt;<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>---\ncatalogue:\n  -\n    author: Homer\n    genre: \"epic poem\"\n    title: Illiad\n  -\n    author: \"William Gilbert\"\n    genre: \"natural philosophy\"\n    title: \"On the Magnet and Magnetic Bodies \u2026\"<\/code><\/pre>\n<h3 id=\"double-and-single-quotes\">D\u1ea5u ngo\u1eb7c k\u00e9p v\u00e0 d\u1ea5u ngo\u1eb7c \u0111\u01a1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#double-and-single-quotes\"><\/a><\/h3>\n<p>D\u1ea5u hai ch\u1ea5m, d\u1ea5u ngo\u1eb7c k\u00e9p, d\u1ea5u ph\u1ea9y v\u00e0 c\u00e1c d\u1ea5u c\u00e2u kh\u00e1c \u0111\u1ec1u l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a c\u00fa ph\u00e1p YAML. Khi s\u1eed d\u1ee5ng ch\u00fang trong c\u00e1c gi\u00e1 tr\u1ecb chu\u1ed7i, c\u1ea7n \u0111\u1eb7c bi\u1ec7t ch\u00fa \u00fd.<\/p>\n<ul>\n<li>Khi s\u1eed d\u1ee5ng gi\u00e1 tr\u1ecb chu\u1ed7i, b\u1ea1n kh\u00f4ng c\u1ea7n ph\u1ea3i s\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c k\u00e9p, nh\u01b0ng b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c k\u00e9p \u0111\u1ec3 bu\u1ed9c gi\u00e1 tr\u1ecb s\u1ed1 \u0111\u01b0\u1ee3c hi\u1ec3u l\u00e0 chu\u1ed7i.<\/li>\n<li>S\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c k\u00e9p \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o c\u00e1c k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t kh\u00f4ng b\u1ecb ph\u00e2n t\u00edch c\u00fa ph\u00e1p.<\/li>\n<li>S\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c k\u00e9p khi b\u1ea1n mu\u1ed1n ph\u00e2n t\u00edch c\u00fa ph\u00e1p m\u00e3 tho\u00e1t, nh\u01b0&nbsp;<code>\\n<\/code>. N\u1ebfu s\u1eed d\u1ee5ng d\u1ea5u ngo\u1eb7c \u0111\u01a1n, m\u00e3 tho\u00e1t s\u1ebd kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e2n t\u00edch c\u00fa ph\u00e1p.<\/li>\n<\/ul>\n<h2 id=\"diving-deeper\">L\u1eb7n s\u00e2u h\u01a1n<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#diving-deeper\"><\/a><\/h2>\n<p>\u0110\u1ec3 t\u00ecm hi\u1ec3u s\u00e2u h\u01a1n v\u1ec1 c\u00fa ph\u00e1p YAML,&nbsp;<a href=\"https:\/\/github.com\/yaml\/yaml-spec\" target=\"_blank\" rel=\"noreferrer noopener\">kho l\u01b0u tr\u1eef ch\u00ednh th\u1ee9c cho th\u00f4ng s\u1ed1 k\u1ef9 thu\u1eadt YAML 1.2<\/a>&nbsp;\u0111\u01b0\u1ee3c duy tr\u00ec c\u00f4ng khai tr\u00ean GitHub, c\u0169ng nh\u01b0&nbsp;<a href=\"https:\/\/github.com\/yaml\/yaml-grammar\" target=\"_blank\" rel=\"noreferrer noopener\">ng\u1eef ph\u00e1p cho YAML 1.2<\/a>&nbsp;.<\/p>\n<p>To\u00e0n b\u1ed9 \u0111\u1eb7c t\u1ea3 YAML 1.2 kh\u00e1 ph\u1ee9c t\u1ea1p. N\u00f3 c\u00f3 211 quy t\u1eafc ng\u1eef ph\u00e1p v\u00e0 \u0111\u1eb7c t\u1ea3 b\u1ed1n ph\u1ea7n, v\u1edbi nhi\u1ec1u chi ti\u1ebft h\u01a1n \u0111\u01b0\u1ee3c l\u00ean k\u1ebf ho\u1ea1ch cho c\u00e1c phi\u00ean b\u1ea3n 1.5 v\u00e0 2.0 s\u1eafp t\u1edbi. C\u00f3 th\u1ec3 s\u1eed d\u1ee5ng YAML v\u1edbi s\u1ef1 hi\u1ec3u bi\u1ebft v\u1ec1 c\u00e1c th\u00e0nh ph\u1ea7n n\u1ec1n t\u1ea3ng ch\u00ednh c\u1ee7a n\u00f3, m\u1ed9t s\u1ed1 trong \u0111\u00f3 \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ec1 c\u1eadp trong h\u01b0\u1edbng d\u1eabn n\u00e0y.<\/p>\n<h3 id=\"yaml-tools\">C\u00f4ng c\u1ee5 YAML<a href=\"https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/#yaml-tools\"><\/a><\/h3>\n<p>C\u00f3 r\u1ea5t nhi\u1ec1u c\u00f4ng c\u1ee5 gi\u00fap ng\u01b0\u1eddi m\u1edbi l\u00e0m quen v\u1edbi YAML. Trong s\u1ed1 \u0111\u00f3 c\u00f3 m\u1ed9t s\u1ed1 tr\u00ecnh ki\u1ec3m tra l\u1ed7i YAML t\u1ef1 \u0111\u1ed9ng, bao g\u1ed3m&nbsp;<a href=\"https:\/\/www.yamllint.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">YAML Lint<\/a>&nbsp;. C\u00e1c c\u00f4ng c\u1ee5 kh\u00e1c c\u00f3 th\u1ec3 thu h\u00fat ng\u01b0\u1eddi m\u1edbi l\u00e0m quen v\u1edbi YAML l\u00e0:<\/p>\n<ul>\n<li>B\u1ed9 chuy\u1ec3n \u0111\u1ed5i gi\u1eefa c\u00e1c \u0111\u1ecbnh d\u1ea1ng kh\u00e1c v\u00e0 YAML. V\u00ed d\u1ee5, VS Code cung c\u1ea5p ti\u1ec7n&nbsp;<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ahebrank.yaml2json\" target=\"_blank\" rel=\"noreferrer noopener\">\u00edch m\u1edf r\u1ed9ng YAML sang JSON<\/a>&nbsp;.<\/li>\n<li>C\u00f4ng c\u1ee5 l\u00e0m \u0111\u1eb9p YAML.&nbsp;<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=esbenp.prettier-vscode\" target=\"_blank\" rel=\"noreferrer noopener\">VS Code Prettier &#8211; Code formatter<\/a>&nbsp;l\u00e0 m\u1ed9t l\u1ef1a ch\u1ecdn ph\u1ed5 bi\u1ebfn.<\/li>\n<\/ul>\n<p>B\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u00eam nhi\u1ec1u c\u00f4ng c\u1ee5 gi\u00fap b\u1ea1n l\u00e0m vi\u1ec7c v\u1edbi YAML b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng t\u00e0i li\u1ec7u tham kh\u1ea3o&nbsp;<a href=\"https:\/\/onlineyamltools.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">c\u00f4ng c\u1ee5 YAML tr\u1ef1c tuy\u1ebfn<\/a>&nbsp;.<\/p>\n<h2 id=\"more-information\">Th\u00f4ng tin th\u00eam<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 mu\u1ed1n tham kh\u1ea3o c\u00e1c ngu\u1ed3n sau \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 ch\u1ee7 \u0111\u1ec1 n\u00e0y. M\u1eb7c d\u00f9 ch\u00fang t\u00f4i cung c\u1ea5p v\u1edbi hy v\u1ecdng r\u1eb1ng ch\u00fang s\u1ebd h\u1eefu \u00edch, nh\u01b0ng xin l\u01b0u \u00fd r\u1eb1ng ch\u00fang t\u00f4i kh\u00f4ng th\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh ch\u00ednh x\u00e1c ho\u1eb7c t\u00ednh k\u1ecbp th\u1eddi c\u1ee7a c\u00e1c t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef b\u00ean ngo\u00e0i.<\/p>\n<ul>\n<li><a href=\"https:\/\/camel.readthedocs.io\/en\/latest\/yamlref.html\" target=\"_blank\" rel=\"noreferrer noopener\">M\u1ed9t tham chi\u1ebfu YAML ng\u1eafn g\u1ecdn<\/a><\/li>\n<\/ul>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/yaml-reference\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>YAML l\u00e0 ng\u00f4n ng\u1eef trao \u0111\u1ed5i d\u1eef li\u1ec7u th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh. N\u00f3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh nh\u01b0&nbsp;Ansible&nbsp;v\u00e0 c\u00e1c c\u00f4ng c\u1ee5 \u0111i\u1ec1u ph\u1ed1i container, nh\u01b0&nbsp;Kubernetes&nbsp;. YAML 1.2 l\u00e0 si\u00eau t\u1eadp h\u1ee3p c\u1ee7a JSON v\u00e0 c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng v\u1edbi c\u00e1c ki\u1ec3u d\u1eef li\u1ec7u<\/p>\n","protected":false},"author":1,"featured_media":35677,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[107],"tags":[],"class_list":["post-34915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-configuration-management-basics"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=34915"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34915\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/35677"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}