Ansible(二):Ansible之剧本(Playbooks)

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

运行结果(我本地运行结果)
Ansible(二):Ansible之剧本(Playbooks)_第1张图片

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链接断开后其启动的程序也跟着中止

你可能感兴趣的:(ansible)