yaml文件的格式解释

发布时间 2023-08-23 23:04:26作者: 叶子在行动
  1. 什么是YAML
    YAML是一种存储数据的文件格式。类似jsonxml
    Ansible playbooks或者配置文件,以称为YAML的特定格式编写。如果您使用过其他数据结构格式(如XMLJSON),则应该能够轻松地使用它。

    上图中就是以3种格式表示的一个server的定义

  2. 简单的数据格式

    1. 键值对: 键和值由冒号分隔, 冒号后面必须有空格。
    2. 数组: 数组名key后面加冒号,然后换行,每个数组元素前面加-,表示这是数组中的一个元素
    3. 字典(Map):字典是在一个项目下组合在一起的一组属性。字典名字后面加冒号;每个单一项目的属性前有相等数目的空格,每一项都对齐在一起。单一项目是key: value的形式。

      YAML中的空格很关键,例如下面的例子,想将FatCarbs设置为Calories的值,就会报错。因为Calories已经有一个值105了。

      数组(lists)可以包含字典。例如下面的例子,有个数组名字为Fruits,包含两个元素BananaGrape,这两个元素分别又是一个字典,字典里面包含了详细的信息。

  3. 什么时候用数组?什么时候用字典?
    以汽车为例子。汽车是一个单一的对象, 它具有颜色、型号、 变速箱和价格等属性。为了存储单个对象的不同信息或属性,我们使用字典。

    在这个简单的字典中,我以键值对定义了car的属性。可能不像这样简单, 例如, 如果我们需要将模型进一步拆分为model namemake year, 则可以将其表示为另一个字典中的字典。

    在本例中, model的单个值现在被一个小字典替换,该字典包含两个属性:nameyear

    假设我们要存储六辆汽车的名称。名字是由汽车的颜色和型号来命名的。为了存储它, 我们将使用一个数组,因为它是同一类型对象的多个项。因为我们只存储名称, 所以我们有一个简单的字符串列表。如果我们想存储每辆车的所有信息。

    我们之前列出的所有信息,如颜色、 型号、 变速器和价格, 该怎么办?我们将把数组从字符串列表修改为字典列表。因此, 我们展开数组中的每一项,并将名称替换为前面构建的字典。这样, 我们就可以使用字典列表在单个YAML文件中表示多辆汽车的所有信息。

    =

  4. 字典是无序集合, 而列表是有序集合
    您在这里看到的两个字典具有相同的banana属性。但是, 您可以看到, 脂肪和碳水化合物属性的顺序并不匹配。在第一本词典中, 脂肪的定义在碳水化合物之前,在第二本词典中, 碳水化合物排在脂肪之后, 但这并不重要。属性可以按任意顺序定义,但只要每个属性的值匹配,两个字典将仍然相同。

    这对于数组是不同的。数组是有序集合,因此项的顺序很重要。所示的两个数组并不相同, 因为applebanana位于不同的位置。这是在使用数据结构时要记住的一点。

    还请记住, 任何以#开头的行都将被自动忽略,并被视为注释。

    YAML例子: payslips是数组,包含三个对象,每个对象包含monthamount两个键值对。

    employee:
      name: john
      gender: male
      age: 24
      address:
        city: 'edison'
        state: 'new jersey'
        country: 'united states'
      payslips:
        - month: june
          amount: 1400
        - month: july
          amount: 2400
        - month: august
          amount: 3400

 

转自:https://blog.csdn.net/u011069294/article/details/130889941  

请参考原作者:

更多关于Ansible的文章,请参考我的Ansible专栏:https://blog.csdn.net/u011069294/category_12331290.html