ansible中的yaml格式

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文件

  1. yaml使用# 表示注释符号

  2. 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

posted @ 2024-05-20 22:31  雷滚滚  阅读(387)  评论(0)    收藏  举报