Ansible Playbooks中的YAML语法
什么是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中创建了一个任务,以大致了解剧本的结构