1.为什么使用PlayBook

playbook也称为剧本,可以解决ad-hoc单行命令无法保存,不便修改,处理复杂任务力不从心的问题,具体用法将多条命令编写到一个yaml文件中,批量完成复杂任务。

2.PlayBook语法

2.1特点

以.yml或.yaml结尾的文件

使用空格按级别缩进

开头(---)结束(...)注释(#)

2.2主要数据形式

字符串

无引号、单引号、双引号均可

this is a string
'this is a string'
"this is a string"

折行写法,竖线表示后面的字符串都处于同一行

long_line: |
  Example 1
  Example 2
  Example 3

列表

- red
- blue
- green

字典

name: tom
password: 1234

查看yaml文件内容

[root@localhost ~]# yum install python2-pip
[root@localhost ~]# pip install pyyaml
[root@localhost ~]# vi myyaml.yml
---
- red
- blue
- green
...
[root@localhost ~]# python -c 'import yaml,sys; print yaml.safe_load(sys.stdin)' < myyaml.yml
['red', 'blue', 'green']

3.PlayBook的编写

playbook由多个play组成,每个play都是一个字典

---
# 一个含有3个Play 的伪PlayBook构成
- key1: value1
  key2: value2
  key3: value3
- key4: value1
  key5: value2
  key6: value3
- key1: value1
  key2: value2
  key3: value3
...

playbook中的关键字不能乱写,常见的关键字如下

- name 属性, 每个play的名字

- hosts 属性, 每个play 涉及的被管理服务器, 同ad-hoc 中的资产选择器

- tasks 属性, 每个play 中具体要完成的任务, 以列表的形式表达

- become 属性, 如果需要提权, 则加上become 相关属性

- become_user 属性, 若提权的话, 提权到哪个用户上

- remote_user属性, 指定连接到远程节点的用户, 就是在远程服务器上执行具体操作的用户。若不指定, 则默认使用当前执行 ansible Playbook 的用户

playbook示例

---
- name: the first play example
  hosts: all
  remote_user: root
  tasks:
    - name: install nginx package
      yum: name=nginx state=present
    - name: copy nginx.conf to remote server
      copy: src=nginx.conf dest=/etc/nginx/nginx.conf
    - name: start nginx server
      service:
        name: nginx
        enabled: true
        state: started

4.运行PlayBook

vi myplaybook.yml

检查语法
ansible-playbook -i hosts myplaybook.yml --syntax-check

执行playbook
ansible-playbook -i hosts myplaybook.yml

单步调试
ansible-playbook -i hosts myplaybook.yml --step

测试运行
ansible-playbook -i hosts myplaybook.yml -C

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐