YAML语法
scalar标量
name:wang
或者使用缩进的方式
name:
wang
标量是最基本的,不可再分的值,其中包括
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
Dictionary字典
字典由key和value构成,且用:分隔,所有的key和value都可以放在同一行,也可以放在不同行
account:{ name:wang,age:30 }
缩进
account:
name:wang
age:30
List列表
列表由多个元素组成,每个元素放在不同行,都以“-”打头,并且“-”后有一个空格,或将”[ ]“括起来放同一行
course:
- linux
- golang
- python
也可以使用[ ]
course:[ Linux,golang,python ]
Shell与YAML对比
#SHELL脚本实现
#!/bin/bash
# 安装Apache
yum install --quiet -y httpd
# 复制配置文件
cp /tmp/httpd.conf /etc/httpd/conf/httpd.conf
cp/tmp/vhosts.conf /etc/httpd/conf.d/
# 启动Apache,并设置开机启动
systemctl enable --now httpd
#Playbook实现
---
- hosts: all
remote_user: root
gather_facts: no
tasks:
- name: "安装Apache"
yum: name=httpd
- name: "复制配置文件"
copy: src=/tmp/httpd.conf dest=/etc/httpd/conf/
- name: "复制配置文件"
copy: src=/tmp/vhosts.conf dest=/etc/httpd/conf.d/
- name: "启动Apache,并设置开机启动"
service: name=httpd state=started enabled=yes
...
Playbook组件
Target定义Playbook的远程主机组
常用参数
- hosts定义远程主机组
- user执行该任务的用户
- sudo设置为yes的时候,执行任务使用root权限
- sudo_user指定sudo普通用户
- connection默认基于SSH连接客户端
- gather_facks获取远程主机facts基础信息
Variable定义playbook使用的变量
常用参数
- vars定义格式,变量名:变量值
- vars_files指定变量文件
- vars_prompt用户交互模式自定义变量
- setup模块去远程主机的值
Task定义远程主机上执行的任务列表
常用参数
- name任务名称,也是屏幕显示信息
- action定义执行动作
- copy复制本地文件到远程主机
- template复制本地文件到远程主机,可以引用本地变量
- service定义服务状态
Handler:当服务配置文件发生变化的时候需进行的操作,比如:重启服务,重新加载配置