ansible --yaml語法


一:介紹:

YAML是一個可讀性高的用來表達資料序列的格式。YAML參考了其他多種語言,包括:XML、C語言、Python、Perl等。

YAML不是XML,不過,在開發的這種語言時,YAML的意思其實是:“Yet  Another Makup Language”(仍是一種標記語言)

特點:

  1. 可讀性好
  2. 和腳本的交互性好
  3. 使用實現怨言的數據類型
  4. 有一個一致的信息模型
  5. 易於實現。
  6. 可以基於流來處理。
  7. 表達能力強,擴展性好。

二:YAML語法:

YAML的語法和其他高階語言類似,並且可以簡單表達清單、散列表、標量等數據結構。其結構(structure)通過空格來展示。

  • 序列(sequence):里的項用“-”來代表,來代表不同元素。
  • MAP里的鍵值對,用":"分隔,比如:
 1 name:tom
 2 age:22
 3 gender:Male
 4 spouse:
 5           name:lili
 6           age:18
 7           gender:Female
 8 children:
 9          - name:tom1
10             age:5
11             gender:Male
12          - name:tom2
13            age:5
14            gender:Female
  • 一個鍵值對,可以一個鍵值對應一個value,也可以一個鍵值對應另一個鍵值對。
  • 序列,相同的數據類型,元素間用"-"表示一個序列內,元素是鍵值對。
  • 用空格來表示結構關系,不是tab。
  • YAML擴展文件以yaml結尾:比如:example.yaml

三:ansible中YAML。

list:

在ansible中叫序列為列表,列表為序列都可以。他們之間元素用"-"開頭例如:

1 # a list of colors
2 - red
3 - blue
4 - black

dictionary:

字典:通過key:value 進行標識。例如:

1 # tom information
2 name:tom
3 age:22
4 job:it

如上3個鍵值對表示一個實體,也可以用{}來表示一個實體,也就是說將上面3個鍵值對放在一個{}中來表示一個實體。

1 #tom information
2 1 {name:tom,age:22,job:it}

基本的 YAML

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

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

列表中的所有成員都開始於相同的縮進級別, 並且使用一個 "- " 作為開頭(一個橫杠和一個空格):

1 ---
2 # 一個美味水果的列表
3 - Apple
4 - Orange
5 - Strawberry
6 - Mango

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

1 ---
2 # 一位職工的記錄
3 name: Example Developer
4 job: Developer
5 skill: Elite

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

1 ---
2 # 一位職工的記錄
3 {name: Example Developer, job: Developer, skill: Elite}

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

1 ---
2 create_key: yes
3 needs_agent: no
4 knows_oop: True
5 likes_emacs: TRUE
6 uses_cvs: false

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

 1 ---
 2 # 一位職工記錄
 3 name: Example Developer
 4 job: Developer
 5 skill: Elite
 6 employed: True
 7 foods:
 8     - Apple
 9     - Orange
10     - Strawberry
11     - Mango
12 languages:
13     ruby: Elite
14     python: Elite
15     dotnet: Lame

 

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

NOTICE:

盡管 YAML 通常是友好的, 但是下面將會導致一個 YAML 語法錯誤:

1 foo: somebody said I should put a colon here: so I did

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

1 foo: "somebody said I should put a colon here: so I did"

然后這個冒號將會被結尾.

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

1 foo: "{{ variable }}"

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM