PlayBook编写及使用
PlayBook是Ansible的脚本工具,用于批量执行复杂任务,相比单行命令更易保存和修改。它采用YAML格式编写,文件以.yml或.yaml结尾,支持字符串、列表、字典等数据结构。PlayBook由多个play组成,每个play包含name、hosts、tasks等关键字,用于定义任务名称、目标主机和具体操作步骤。编写完成后可通过ansible-playbook命令运行,支持语法检查(--sy
·
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
更多推荐
所有评论(0)