ansible剧本(playbook)- 快速入门
剧本(playbook)比AD-Hoc模式更强大,可以一次性完成多个任务,类似于shell脚本,但是他有自己的语法规范。剧本可以实现服务自动部署、提高运维工作效率、减少出错几率。
# 先准备一个目录放我们的playbook文件。
[root@m01 ~]# mkdir ansible
[root@m01 ~]# cd ansible/
先来看个例子吧:
# 先写playbook
[root@m01 ansible]# cat first-playbook.yml
---
- hosts: com
remote_user: root
tasks:
- name: hello host
command: hostname
# 执行playbook。
[root@m01 ansible]# ansible-playbook first-playbook.yml
上面的Ansible-playbook 命令的执行结果如下:
我们可以看到脚本执行成功。粉红色表示WARNING,是一些提示信息。对于命令执行成功的部分,以黄色显示。
注意:
在执行playbook之前,可以先检查一下yml文件的语法:ansible-playbook first-playbook.yml --syntax-check,如果语法没问题,则返回如下结果:
如果有语法错误,则有如下报错信息:
然后我们根据报错信息去修改yml文件即可。
上面我们就成功完成了第一个剧本。我们来看看这个剧本是怎么写的:
[root@m01 ansible]# cat first-playbook.yml
--- # 开头是三个“减号”,表明这是一个yaml文件的开始
- hosts: com # “减号”开头,空格后面写上hosts,指定需要操作的主机。冒号后面还有一个空格,然后写出主机或主机组的名字
remote_user: root # 指定在远程主机上执行命令的用户
tasks: # 书写任务的开始
- name: hello host # 开头四个空格,name指明任务的名字,冒号之后加空格,写出task名字
command: hostname # 模块名:[空格]需要执行的命令。这里我们用的command模块和hostname命令。
所以:
playbook是由一个或多个play组成的列表
playbook主要功能就是把一组主机通过ansible中的task定义好角色(所谓task其实就是使用ansible的一个module),把多个play组织在一个playbook中,即可以让他们联合起来按照实现写好的剧本“同唱一台大戏”。
playbook的语法是采用的YAML语法编写的。