1、剧本(Playbooks)简介
剧本是Ansible的配置、部署语言,由它对描述你想要远程机器执行的策略或步骤。
使用剧本不仅可以简单的对远程机器进行管理,还有很多更强大的功能 。
2、关于YAML
每一个Ansible剧本都是一个YAML格式的文件,有一些简单的YAML语法需要先了解一下
- 所有的YAML文件都是由—开始由…结束
- 所有的列表中的每一项都是由一个“-”开头 例如
- 字典(或者叫做MAP)表示一系列键值对
---
# 一个表示水果品种记录(列表)
fruits:
- Apple
- Orange
- Strawberry
- Mango
# 一个雇员记录(字典)
martin:
name: Martin D'vloper
job: Developer
skill: Elite
# 一个更加复杂的YAML配置,包含了列表和字典
workers:
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
...
上述YAML文件描述一个水果列表需要注意两点
第一:每个”:” 和”-“后边需要跟一个空格
第二:注意其层次缩进
(以上内容为Ansible中经常用到的,还有更多关于YAML的用法大家可以查看文档http://docs.ansible.com/ansible/YAMLSyntax.html,此处不再赘述)
3、一个简单的Ansible剧本
执行
$vi ping.yml
内容如下
---
- hosts: all
tasks:
- name: test connection
ping:
...
执行
$ansible-playbook ping.yml
运行结果(我本地运行结果)
4、Ansible模块
Ansible 有很多模块,我们经常用到的比如shell、command、copy等,好在Ansible给我们提供了丰常详细丰富的使用文档
http://docs.ansible.com/ansible/list_of_all_modules.html
大家可以在需要的时候查看其使用方法即可,非常简单方便
例如下面这个剧本是执行远程机器特定脚本的一个剧本
---
- hosts: all
remote_user: root
tasks:
- name: start disspider master server
shell: nohup ./start.sh
args:
chdir: /opt/disspidermaster-20161114/bin
...
关于shell的介绍http://docs.ansible.com/ansible/shell_module.html
注意上述代码中的 nohup 这是为了当ssh链接断开后相应的程序仍然执行,防止ansible的ssh链接断开后其启动的程序也跟着中止