简述
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模块
- 脚本中通过的形式使用变量,变量的定义可以在play中的vars定义,也可以在之前文章提到的在hosts文件、组变量文件中定义
- tasks中的每一个任务都指定name值可以提高脚本执行时的易读性
执行ansible脚本
通过ansible-playbook命令可以执行yml脚本,如
ansible-playbook demo.yml
执行后输出结果如图所示
如果希望能够看见执行过程中的调试信息可增加-verbose参数
ansible-playbook -verbose demo.yml
[目录]
[上一篇] Ansible实战[一]——Ansible基础
[下一篇] Ansible实战[三] ——自动化部署实战例子