Linux自动化运维工具之ansible(二)
时间:2018-05-03 19:14 来源:网络整理 作者:墨客科技 点击:次
YAML简介 YAML是一个可读性高的用来表达资料序列的格式。 YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822等。 Clark Evans在2001年在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。 YAML Ain't Markup Language,即YAML不是XML。不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。 其特性包括: YAML的可读性好 YAML和脚本语言的交互性好 YAML使用实现语言的数据类型 YAML有一个一致的信息模型 YAML易于实现 YAML可以基于流来处理 YAML表达能力强,扩展性好YAML语法 YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。 其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代;Map里的键值对用":"分隔。 YAML文件扩展名通常为.yaml或者.yml。 下面是一个示例。 2 个重要的结构组成部分:list和directory list 列表的所有元素均使用“-”打头,例如: dictionary字典通过key与valuef进行标识,例如: 也可以将key:value放置于{}中进行表示,例如: 多个映射关系组成一个字典,一个列表可以包含多个字典。 YAML中的变量 变量命名 变量名仅能由字母、数字和下划线组成,且只能以字母开头。 facts facts是由正在通信的远程目标主机发回的信息,这些信息被保存在ansible变量中。 要获取指定的远程主机所支持的所有facts,可使用如下命令进行: # ansible hostname -m setup这个命令可以获得被监控端主机的各种信息,将这些信息得到后保存到变量中。 自定义变量在 yaml 中可以使用vars关键字来定义变量: 变量的引用 特殊的变量,迭代 当有需要重复性执行的任务时,可以使用迭代机制。 其使用格式为将需要迭代的内容定义为item变量引用,并通过with_items语句来指明迭代的元素列表即可。 示例: 例如:在被控端添加 2 个用户 方式 1:一般做法 方式1:使用变量方式 方式2:使用迭代方式 事实上,with_items中可以使用元素还可为hashes,例如: Inentory文件的格式 inventory文件遵循INI文件风格,中括号中的字符为组名。 可以将同一个主机同时归并到多个不同的组中;此外,当如若目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号来标明。 如果主机名称遵循相似的命名模式,还可以使用列表的方式标识各主机,例如: 主机变量 可以在inventory中定义主机时为其添加主机变量以便于在playbook中使用。例如: 组变量组变量是指赋予给指定组内所有主机上的在playbook中可用的变量。例如: |