Ansible实战[二] ——playbook初探

简述

Ansible的脚本被称为playbook,playbook是基于YAML语法进行编写的,一个playbook会包含多个play,每个play中会包含一系列的任务,所有的play组合起来共同完成一系列的运维操作。

YAML语法简介

1、列表

每一个YAML文件都是从一个列表开始,列表中的所有成员都开始于相同的缩进级别, 并且使用一个"- "作为开头(一个横杠和一个空格),如

# Address Book
- Amy
- Jerry
- Tom

2、哈希/字典

在YAML中使用键值对表示成员属性,它们被称为“哈希” 或 “字典”,如

name: amy
age: 20

也可以用以下语法表示字典集(在Ansible中不常见)

{name: amy, age: 20}

更常见的情况是每一个列表都是包含一组字典集,如

# Address Book
- name: Amy
  age: 20
- name: Jerry
  age: 21
  job: teacher
- name: Tom
  age: 25

playbook结构示例

#playbookdemo.yml
#play1
- hosts: group1
  vars: 
    tomcat_home: ~/tomcat
  tasks:
    - name: shutdown tomcat
      shell: {{ tomcat_home }}/bin/shutdown.sh
    - name: startup tomcat
      shell: {{ tomcat_home }}/bin/startup.sh
#play2
- hosts: group2
  tasks:
    - name: restart nginx
      shell: service nginx restart

示例详解:

  • 实例playbook中包含了两个play,分别针对group1主机组和group2主机组进行了一些操作
  • play1的tasks中包含了两个操作,而两个操作都是通过调用shell模块执行linux命令
  • 除了shell模块,Ansible还内置了许多非常常用的模块,如远程复制的copy模块
  • 脚本中通过{{ var_name }}的形式使用变量,变量的定义可以在play中的vars定义,也可以在之前文章提到的在hosts文件、组变量文件中定义
  • tasks中的每一个任务都指定name值可以提高脚本执行时的易读性

执行ansible脚本

通过ansible-playbook命令可以执行yml脚本,如

ansible-playbook demo.yml

执行后输出结果如图所示
QQ截图20170317084823.png

如果希望能够看见执行过程中的调试信息可增加-verbose参数

ansible-playbook -verbose demo.yml

[[目录]](https://blog.leapmie.com/archives/297/)
[[上一篇] Ansible实战[一]——Ansible基础](https://blog.leapmie.com/archives/298/)
[[下一篇] Ansible实战[三] ——自动化部署实战例子](https://blog.leapmie.com/archives/307/)


发表评论