ansible软件的playbook编写需要遵循YAML语法,因此我们得先学一下YAML语法结构
在线json转换yaml
https://oktools.net/json2yaml
写完yaml,不确定缩进关系对不对,去在线yaml网站,格式化,判断语法是否正常。
json格式 可以在网络中传输,可以发给后端 python (python的数据类型,去解析json的数据格式,处理);也可以发给前端 (js, js解析json的数据格式,然后处理)。运维怎么处理json,用jq命令,(获取到json数据后,提取json的数据)。
yaml特点
1.严格的缩进(空格数)表示层级关系(一般敲2个空格表示一个层级关系)
2.不要使用tab键
3.冒号: 后面一定得有空格
4.短横线- 后面一定得有空格。短横线表示列表
5.剧本文件名必须是yaml或者yml,程序可以读取,以及vim提供颜色高亮
yaml剧本例子:安装nginx
yaml风格1
字典参数格式
点击查看代码
1.先写好yaml
[root@master-61 /opt]#cat install_nginx.yml
---
- name: 这是一个安装nginx的剧本
hosts: nfs
tasks:
- name: 01 安装nginx
yum:
name: nginx
state: installed
- name: 02 启动nginx
systemd:
name: nginx
state: started
2.可以去验证yaml语法是否正确
方法1,用ansible-playbook命令.仅测试剧本语法是否正确,不会真去执行。
ansible-playbook -C install_nginx.yml
解读yaml
1.yaml以 --- 开头,表示这是一个yaml文件
-
yaml使用# 表示注释符号
-
yaml中的字符串一般不加引号,除非需要引用变量时候
Yaml列表
使用"- "(减号加一个或多个空格)作为列表项,yaml的列表在playbook中极重要,必须得搞清楚它的写法。yaml一个列表就是一个短横线 - ,转变为json类型看效果 就是 [ ]
"男同学":
- 张三 #列表1
- 樵夫 #列表2
- 于超 #列表3
"女同学":
- 花花
- 月月
- 兔兔
列表数据用一个短横杠+空格组成
在playbook中,列表是定义一个局部环境,名字可有可无,表示定义一个范围,范围内的属性都属于该列表。
---
- name: list1 # 列表1,同时给了个名称
hosts: 10.0.0.7 # 指出了hosts是列表1的一个对象
remote_user: root # 列表1的属性
tasks: # 还是列表1的属性
- hosts: 10.0.0.7 # 列表2,但是没有为列表命名,而是直入主题
remote_user: root
sudo: yes
tasks:
短横线用于定义列表
多个短横线,同一个缩进下的元素,表示一个列表中的多个元素
- xxx
- ooo
- ddd
- ccc
"xxx", "ooo","ddd","ccc"识别为,同一个列表下的多个元素
一个短横线,同一个缩进下的元素,表示是一个整体(单个元素),是大字符串
- xxx
ooo
ddd
ccc
其实处理的数据是 "xxx ooo ddd ccc"
yaml中定义hosts的信息语法
# 方式一:定义所管理的主机IP地址
- hosts: 192.168.178.111
tasks:
动作...
# 方式二:定义所管理主机的名字
- hosts: backup01
tasks:
动作...
# 方式三:定义管理主机
- hosts: 192.168.178.111, rsync01
tasks:
动作...
# 方式四:管理所有主机
- hosts: all
tasks:
动作...
关于剧本的tasks任务部分
tasks任务部分,就是决定用什么模块,做什么事,以及模块对应的参数的风格
字典风格的模块参数
[root@master-61 /opt]#cat install_nginx.yml
---
- name: 这是一个安装nginx的剧本
hosts: 172.16.1.7,172.16.1.8,nfs
tasks:
- name: 01 安装nginx
yum:
name: nginx
state: installed
- name: 02 启动nginx
systemd:
name: nginx
state: started
变量风格的模块参数
[root@master-61 /opt]#cat vars_install_nginx.yml
---
- name: 这是一个安装nginx的剧本
hosts: 172.16.1.7,172.16.1.8,nfs
tasks:
- name: 01 安装nginx
yum: name=nginx state=installed
- name: 02 启动nginx
systemd: name=nginx state=started
- name: 03 设置nginx开机自启
systemd: name=nginx enabled=yes
标签:tasks,name,nginx,列表,yaml,ansible,hosts,格式
From: https://www.cnblogs.com/leigungun/p/18202511