Ansible Playbooks中的YAML语法

时间:2020-02-23 14:29:39  来源:igfitidea点击:

什么是YAML?

  • YAML不是标记语言(YAML)通常被称为数据序列化语言。

  • 它旨在使人类可读并将数据组织为结构化格式。

  • 编程语言可以理解YAML文件的内容(通常具有.yml或者.yaml扩展名)并将它们映射到内置数据类型。

  • 例如,当我们在Python脚本中使用.yaml文件时,它将自动将内容转换为字典{}或者列表[],因此我们可以对其进行处理和迭代。

  • 所有YAML文件(无论是否与Ansible关联)都可以"可选地"以" ---"开头,以" ...."结尾,这是YAML格式的一部分,表示文档的开始和结束。

  • YAML中的"列表"以"连字符"表示,后跟一个空格。
    每个键都是键值对的关联数组,字典或者映射。

  • 缩进很重要。
    所有"列表成员"应具有相同的缩进级别。

  • 每个游戏可以包含键值对,并用:隔开,以表示主机,变量,角色,任务等。

具有文件格式的YAML语法

开发YAML文件时需要遵循一些规则。
YAML使用缩进(如Python),它可以建立项目之间的关系:

YAML文件中的键值对

下面我们以最简单的形式获取数据,例如YAML格式的键值对,其中键和值之间用冒号分隔。
请务必在y冒号后加上空格,以区分键和值

Fruit: Apple
Vegetable: Carrot
Liquid: Water
Meat: Chicken

这里的键是水果,蔬菜,液体,肉,而相应的值是苹果,胡萝卜,水和鸡肉

YAML文件中的数组或者列表

其中我们列出了一些水果和蔬菜。
因此,水果和蔬菜后跟冒号表示数组,而数组的所有元素均以破折号(-)开头,因此橙,苹果和香蕉是水果数组的元素,而胡萝卜,花椰菜和番茄是蔬菜数组的元素

Fruits:
- Orange
- Apple
- Banana
Vegetables:
- Carrot
- Cauliflower
- Tomato

我们可以在以下网址了解有关" YAML语法"的更多信息:Ansible剧本教程|如何用示例编写剧本

创建或者修改.vimrc

我们知道YAML文件是基于缩进的,但是重要的一点是,在YAML文件中,我们不应该使用TAB,而是建议使用空格字符。
因此,我们将更新.vimrc文件,使其仅在有人按下Yaml FileType的TAB按钮时才允许两个空格。
我们将其添加到将要使用YAML文件的控制器节点上的ansible用户的主文件夹中。

[ansible@controller ~]$cat .vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et

构建你的ansible剧本

  • 一本剧本基于YAML文件语法,可以包含一个或者多个剧本

  • 戏剧是主持人和任务的结合。

  • 任务不过是适用于主机组的调用或者操作。

其中我试图强调一本剧本的结构:

  • 这是一个非常简单的剧本,只是为了让我们对结构有所了解。

  • 第一行是我们放置---标记剧本开始的地方

  • 接下来,我们可以使用name来指定PLAY的名称,也可以使用主机。
    但第二行应以 [space] [dash] [space]开头,后跟名为PLAY-1的名称的键

  • 接下来,我们可以提供主机列表以及其他选项,我们将在本教程的整个过程中进行探索。

  • 然后我们提到任务,或者可以为任务指定名称。
    这将再次用作具有键值对的另一个列表。

  • 在任务下,我们定义的第一件事是模块,它将实际执行任务

  • 在模块下,我们必须提供相应模块的参数列表。
    在此示例中,我选择了调试模块,该模块将在控制台上显示一条消息。

  • 我在PLAY-1中创建了两个任务,在PLAy-2中创建了一个任务,以大致了解剧本的结构