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