目录
一.yaml语法格式
1.定义:
yaml是类似于xml,json的标记性语言,强调以数据为中心,ansible的playbook的编写主要遵守yaml语法格式
2.yaml支持几种数据类型
(1)纯量:
一个简单的值,字符串、布尔值、整型数,浮点型数,时间(yyyy-MM-dd格式)等
(2)对象
键值对集合,字典
#推荐第一种形式,以"键: 值"表示键值对
a:
age: 20
address: sichuan
#第二种形式逐渐减少使用
a: {age: 20,address: sichuan}
(3)数组
一组按次序排列值,序列/列表
#推荐第一种形式,以多个"-"表示列表
name:
- a
- b
#第二种形式逐渐减少使用
address: [a,b]
3.playbook-yaml书写的注意事项
(1)在":"后需要加一个空格
(2)同一级别的元素应该有相同的缩进量,子元素的缩进量要大于父元素缩进量
--- #playbook开头以"---"标记
- name: create file #最开头的name表示对整个yaml任务的描述
hosts: servera #对哪些受管节点执行
tasks: #要执行的任务,tasks,hosts属于同级元素,书写相同缩进量
- name: ...... #该任务的描述,此处name属于tasks的子元素,缩进量应多于tasks的缩进量
file:
#执行任务用到的模块,在使用模块时推荐参照"ansible-doc 模块名"结果中的EXAMPLES例子进行书写
name:...... #,模块用到的其他选项等
......
(3)yaml的缩进建议两个空格,尽量不使用tab键,如果使用tab键可以更改tab的空格量设置,指定针对yaml文件类型生效,缩进量为2
[student@workstation ~]$ vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
(4)有多行字符串内容时,可以使用"|"或">"来表示换行
二.playbook编写和运行
1.单个简单playbook示例
参照"ansible-doc yum"的EXAMPLES编写
[student@workstation ~]$ cat httpd.yaml
--- #开头标识
- name: install http #描述
hosts: webservers #对webservers组内主机执行
tasks: #需要执行的任务
- name: install
yum: #使用yum模块
name: httpd #包名
state: present #操作为present安装
(1)进行语法检查
语法检查不算绝对精准,错误一般存在报错点附近,且部分单词拼写错误不会进行检查
[student@workstation ~]$ ansible-playbook httpd.yaml --syntax-check
playbook: httpd.yaml
(2)执行playbook
[student@workstation ~]$ ansible-playbook httpd.yaml
#执行成功
PLAY [install http] *********************************************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************************************
ok: [servera]
ok: [serverb]
TASK [install] **************************************************************************************************************************************************************************
ok: [serverb]
ok: [servera]
PLAY RECAP ******************************************************************************************************************************************************************************
servera : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverb : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[student@workstation ~]$ ansible-playbook httpd.yaml -C
#执行空运行检查模式,不会对受管节点的配置实际更改
(3)通过添加参数输出playbook执行后详细信息
[student@workstation ~]$ ansible-playbook httpd.yaml -v/-vv/-vvv/-vvvvv
参数 | 功能 |
---|---|
-v | 显示任务结果 |
-vv | 显示任务结果和配置 |
-vvv | 显示受管主机连接信息等 |
-vvvv | 更加详细显示连接插件、执行脚本用户和脚本等信息 |
2.多playbook示例
---
- name: install php mariadb
hosts: servera
tasks:
- name: install them
yum:
name: "{{packages}}" #引用变量
vars: #创建packages变量,列表中值为php和mariadb
packages:
- php
- mariadb
- name: install development tools
hosts: serverb
tasks:
- name: install them
yum:
name: "@Development tools" #参照EXAMPLES写法安装扩展包
state: present
- name: update all #更新所有包
hosts: webservers
tasks:
- name: update them
yum:
name: '*'
state: latest