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 命令的执行结果如下:

ansible剧本实现修改mysql密码 ansible剧本使用_linux

我们可以看到脚本执行成功。粉红色表示WARNING,是一些提示信息。对于命令执行成功的部分,以黄色显示。

注意:

在执行playbook之前,可以先检查一下yml文件的语法:ansible-playbook first-playbook.yml --syntax-check,如果语法没问题,则返回如下结果:

ansible剧本实现修改mysql密码 ansible剧本使用_Cloud_02

如果有语法错误,则有如下报错信息:

ansible剧本实现修改mysql密码 ansible剧本使用_linux_03

然后我们根据报错信息去修改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语法编写的。