用wordpress做视频网站,响应式网站设计多少钱,计算机网站开发是什么专业,ecto wordpress4、yaml语法应用 ansible的playbook编写是yaml语言编写#xff0c;掌握yaml语法是编写playbook的必要条件#xff0c;格式要求和Python相似#xff0c;具体教程参考如下yaml语言教程 附上一个yaml文件转js格式文件链接在线免费yaml内容转json格式 4.1、 ansible中的yaml语法…4、yaml语法应用 ansible的playbook编写是yaml语言编写掌握yaml语法是编写playbook的必要条件格式要求和Python相似具体教程参考如下yaml语言教程 附上一个yaml文件转js格式文件链接在线免费yaml内容转json格式 4.1、 ansible中的yaml语法应用 ansible中yaml语法和上述教程大同小异以下是个人简化和总结 基本语法规则如下 以 --- 开头 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键只允许使用空格 缩进的空格数目不重要只要相同层级的元素左侧对齐即可 # 号表示注释从这个字符一直到行尾都会被解析器忽略可以在一行的中间使用注释 # 之后的内容。关于注释需要注意是不是任意位置都能使用当分行写时不能放在分行的所在行 YAML 支持的数据结构有三种 对象键值对的集合又称为映射mapping/ 哈希hashes / 字典dictionary数组一组按次序排列的值又称为序列sequence / 列表list以 - 开头有空格间隔 纯量scalars单个的、不可再分的值ansible中很少用到 4.2、对象简介 ansible中yaml对象和计算机的中是key-value数据结构相似只是表达的方式不同在ansible中对可以采用两种表达方式。切记 : 冒号之后一定要加空格否则报错 # 多行式
host: localhost
remote_user: root
# 行内式也称为单行式两边是大括号包围
{ host: localhost, remote_user: root } 注意 在一行表示中字典的值可以嵌套其他字典但是需要用引号包围起来代表一个整体值返回的是整体而且不是直接嵌套字典下面引号部分会给实际案例解释。冒号加空格加内容即: haha这个格式代表的是字典的表达式这个是yaml语法规定的冒号加内容即:haha代表的是普通的表达式没有特殊意义所以定义对象需要注意但是这种普通表达式有一些情况会用到例如下文中引号的例子中4.3、数组简介 在ansible中数组也称为列表以 - 开头有空格间隔同样有两种表达方式。 # 多行式
- shell
- copy
# 单行式内联式两边用中括号包围
[shell, copy] 4.4、分行写 playbook中的分行写支持三种格式分别是 在key之后使用 | 表示保留换行 在key之后使用 表示折叠换行 采用多行缩进格式建议从缩进的第二行用 四个 空格表示缩进。需要注意注释的位置 # 以下例子表示三种不同的分行写格式注意看区别
--- - hosts: lzcxtasks:- shell: echo Hello world /tmp/test.txtcreates/tmp/haha.txt # 分行写注意缩进同时这行的注释不能放到上一行否则报错- shell: | # 冒号之后要有空格echo 张三 /tmp/test.txtecho 李四 /tmp/test.txtargs:creates: /tmp/haha.txt- shell: # 大于号之后要有空格echo 王五 /tmp/test.txtcreates: /tmp/haha.txt 运行效果图 4.5、向模块传递参数 模块的参数⼀般来说是keyvalue格式的有3种传递的⽅式 直接写在模块后此时要求使⽤keyvalue格式。这是让ansible内部去解析字符串。因为可分⾏写所以有多种写法 写成字典型即key: value。此时要求多层缩进。这是让yaml去解析字典。shell和command模块不能使用这种格式 使⽤内置属性args然后多层缩进定义参数列表。这是让ansible明确指定⽤yaml来解析 # 参数的多种格式
---- hosts: lzcxtasks:- shell: echo 1 /tmp/test.txt creates/tmp/haha.txt # 单行格式- shell: echo 2 /tmp/test.txtcreates/tmp/haha.txt # 多行格式注意缩进同时这行的注释不能放到上一行否则报错- shell: echo 3 /tmp/test.txtargs: creates: /tmp/haha.txt # 使用内置args参数- shell: echo 4 /tmp/test.txtcreates/tmp/haha.txt # 大于号多行缩进模式- shell: |echo 5.1 /tmp/test.txtecho 5.2 /tmp/test.txtargs:creates: /tmp/haha.txt- yum:name: dos2unixstate: installed 4.6、playbook中的引号使用 引号的作用可以将一个字典中的value值表达式当作整体返回这个表达式里面可以嵌套字典playbook中定义的都是些列表和字典。绝⼤多数时候都不需要使⽤引号但有两个特殊情况需要考虑使⽤引号 出现⼤括号{} 值value出现冒号加空格时: 即嵌套字典时需要将嵌套的部分用引号当作整体返回 # 附上一个综合例子注意每个模板内容的区别
---- hosts: localhosttasks:- shell: echo {{inventory_hostname}}:haha- shell: echo {{inventory_hostname}}:haha- shell: echo {{inventory_hostname}}:haha- shell: echo {{inventory_hostname}}: haha- shell: echo {{inventory_hostname}}:haharegister: hello- debug: msg{{hello.stdout}}: heihei- shell: echo {{inventory_hostname}}:haharegister: hello1- debug: msg{{hello1.stdout}}:heihei 解释 前面三个shell模块字典的value都是普通的表达式有引号和无引号结果是一样的需要注意的是:冒号之后没有空格而是直接跟上内容这种表达式不是字典实际上可以把这个冒号当作普通的字符串看待第四个shell模块中因为value值嵌套了字典而且还使用了大括号引用变量这种表达式需要将整个表达 式括起来因此需要用单引号将整个表达式括起来用整体当作一个值赋值给模块。理解这两点剩下的模块也是一样的意思从打印的结果看: 和:的区别是当字典的值嵌套了字典时即使用: 时打印也会按照这个格式打印也就是冒号的下一个字符串是空格而:这个普通的格式则是跟上内容4.7、playbook和play的关系 ⼀个playbook中可以包含多个play。每个play都⾄少包含有tasks和hosts这两项还可以包含其他⾮必须项如vars,vars_f iles,remote_user等。tasks中可以通过模块调⽤定义⼀系列的action。只不过绝⼤多数时候⼀个playbook都只定义⼀个play这样做的好处是便于维护。 playbook文件中基本结构为 playbook: [play1, play2, play3]play: [hosts, gather_facts, connection, become, remote_user, tasks, vars...]tasks: [变量vars、循环with_xxx、判断when、命名name、module1, module2,...] 需要注意的是当play使用了role时看上去没有tasks和hosts选项实际上role里面包含了所以有没有tasks和hosts没关系但没有使用role时一定要有 4.8、yaml编写总结 缩进关于缩进空格的多少无关注重的是层级一致性个人习惯缩进4或2个空格区分对象的冒号列表编写-加内容编写完之后换行时会自动对齐到-列这是错误的需要手动对齐- 后的内容所在列例如tasks后添加冒号:时会自动对齐-实际上所有的冒号添加之后换行时编辑器默认对齐上一行的第一个字符串位置需要自行手动对齐注释关于注释经测试不能出现在对象的值value上否则报错。例如不能放tasks的冒号之后之后---
- hosts: lzcxtasks:- shell: echo haha # 注释不能出现在task的冒号之后 转载于:https://www.cnblogs.com/AutoSmart/p/10273164.html