编写Ansible Playbook剧本,使用Playbook完成自动化操作
- 熟悉Playbook语法格式
- 编写Playbook管理系统账户
- 编写Playbook管理逻辑卷
- 编写Playbook管理软件包
YAML的格式要求如下:
- "#"代表注释,一般第一行为三个横杠(---)
- 键值【(key/value)->(a: 11)和a=11一个性质】对使用":"表示,数组(一个变量有多个值){a=(11 12 13)}使用"-"表示,"-"后面有空格数组
- key和value之间使用":"分隔,":"后面必须有空格
- 一般缩进由两个或以上空格组成
- 相同层级的缩进必须对齐,缩进代表层级关系
- 全文不可以使用tab键
- 区分大小写
- 扩展名为yml或者yaml
- 跨行数据需要使用>或者|,其中|会保留换行符
Playbook语法格式要求如下:
- playbook采用YAML格式编写
- playbook文件中由一个或多个play组成
- 每个play中可以包含:
- hosts(主机)、tasks(任务)、vars(变量)等元素组成
- 使用ansible-playbook命令运行playbook剧本
测试Playbook语法格式
编写第一个Playbook(剧本)
hosts、tasks、name是关键词(不可修改),ping是模块,调用不同模块完成不同任务。
- [root@control ansible]# vim ~/ansible/test.yml
- ---
- - hosts: all #hosts定义要远程谁?
- tasks: #tasks定义远程后要执行的任务有哪些?
- - name: This is my first playbook #name后面的具体内容可以任意
- ping:
- [root@control ansible]# ansible-playbook ~/ansible/test.yml #执行
定义多个主机和任务的剧本
hosts由一个或多个组或主机组成,逗号分隔,tasks由一个或多个任务组成,多个任务按顺序执行,执行ansible-playbook命令可以使用-f选项自定义并发量。
- [root@control ansible]# vim ~/ansible/test.yml
- ---
- - hosts: test,webserver
- tasks:
- - name: This is my first playbook #name后面的内容可以任意
- ping:
- - name: Run a shell command
- shell: touch ~/shell.txt
- #hosts定义需要远程哪些被管理主机,hosts是关键词
- #tasks定义需要执行哪些任务,tasks是关键词
- #第一个任务调用ping模块,该模块没有参数
- #第二个任务调用shell模块在被管理主机创建一个空文件~/shell.txt
- [root@control ansible]# ansible-playbook ~/ansible/test.yml -f 5
- # 验证:到node1、node3、node4主机分别执行命令ls /root/shell.txt查看是否有该文件