天天看點

YAML 文法

YAML 文法

這個頁面提供一個正确的 YAML 文法的基本概述, 它被用來描述一個 playbooks(我們的配置管理語言).

我們使用 YAML 是因為它像 XML 或 JSON 是一種利于人們讀寫的資料格式. 此外在大多數變成語言中有使用 YAML 的庫.

你可能希望讀 Playbooks 實踐中如何使用的.

基本的 YAML

對于 Ansible, 每一個 YAML 檔案都是從一個清單開始. 清單中的每一項都是一個鍵值對, 通常它們被稱為一個 “哈希” 或 “字典”. 是以, 我們需要知道如何在 YAML 中編寫清單和字典.

YAML 還有一個小的怪癖. 所有的 YAML 檔案(無論和 Ansible 有沒有關系)開始行都應該是 ---. 這是 YAML 格式的一部分, 表明一個檔案的開始.

清單中的所有成員都開始于相同的縮進級别, 并且使用一個 "- " 作為開頭(一個橫杠和一個空格):

<code>-</code><code>-</code><code>-</code>

<code># 一個美味水果的清單</code>

<code>-</code> <code>Apple</code>

<code>-</code> <code>Orange</code>

<code>-</code> <code>Strawberry</code>

<code>-</code> <code>Mango</code>

一個字典是由一個簡單的 鍵: 值 的形式組成(這個冒号後面必須是一個空格):

<code># 一位職工的記錄</code>

<code>name: Example Developer</code>

<code>job: Developer</code>

<code>skill: Elite</code>

字典也可以使用縮進形式來表示, 如果你喜歡這樣的話:

<code>{name: Example Developer, job: Developer, skill: Elite}</code>

Ansible并不是太多的使用這種格式, 但是你可以通過以下格式來指定一個布爾值(true/fase):

<code>create_key: yes</code>

<code>needs_agent: no</code>

<code>knows_oop: </code><code>True</code>

<code>likes_emacs: TRUE</code>

<code>uses_cvs: false</code>

讓我們把目前所學到的 YAML 例子組合在一起. 這些在 Ansible 中什麼也幹不了, 但這些格式将會給你感覺:

<code># 一位職工記錄</code>

<code>employed: </code><code>True</code>

<code>foods:</code>

<code>    </code><code>-</code> <code>Apple</code>

<code>    </code><code>-</code> <code>Orange</code>

<code>    </code><code>-</code> <code>Strawberry</code>

<code>    </code><code>-</code> <code>Mango</code>

<code>languages:</code>

<code>    </code><code>ruby: Elite</code>

<code>    </code><code>python: Elite</code>

<code>    </code><code>dotnet: Lame</code>

這就是你開始編寫 Ansible playbooks 所需要知道的所有 YAML 文法.

Gotchas

盡管 YAML 通常是友好的, 但是下面将會導緻一個 YAML 文法錯誤:

<code>foo: somebody said I should put a colon here: so I did</code>

你需要使用引号來包裹任何包含冒号的哈希值, 像這樣:

<code>foo: </code><code>"somebody said I should put a colon here: so I did"</code>

然後這個冒号将會被結尾.

此外, Ansible 使用 “` var `” 來引用變量. 如果一個值以 “{” 開頭, YAML 将認為它是一個字典, 是以我們必須引用它, 像這樣:

<code>foo: </code><code>"{{ variable }}"</code>

     本文轉自506554897 51CTO部落格,原文連結:http://blog.51cto.com/506554897/1954700,如需轉載請自行聯系原作者