1.简介
Playbook 也通常被⼤家翻译成剧本。
可以认为它是Ansible ⾃定义的⼀⻔语⾔(可以将 Playbook ⽐作Linux 中的 shell,⽽ Ansible 中的 Module 可以⽐作为 Linux 中的各种命令。)
2.Play的定义
PlayBook遵循YAML 的语法格式。
由于Playbook 是由⼀个或者多个Play组成,那么如果我们熟悉Play的写法,就⾃然掌握了我们这章的PlayBook。
那如何定义⼀个Play呢 ?
- 每⼀个Play 都是以短横杠开始的
- 每⼀个Play 都是⼀个YAML 字典格式
根据规则,我们可以先构建出一个假想的Play:
---
- key1: value1
key2: value2
key3: value3
...
由于⼀个Playbook 是由⼀个或者多个Play构成, 那么⼀个含有多个Play的Playbook 结构上应该是如下的样⼦
---
# ⼀个含有3个Play 的伪PlayBook构成
- key1: value1
key2: value2
key3: value3
- key4: value1
key5: value2
key6: value3
- key1: value1
key2: value2
key3: value3
...
3.Play属性
以上⼀⼩节中的Play为基础, Play中的每⼀个key,⽐如 key1, key2 等;这些key在PlayBook中被定义为Play的属性。
这些属性都具有特殊的意义,我们不能随意的⾃定义Play 的属性。
接下来就来看看 Ansible 本身都⽀持哪些Play属性。
常⽤属性 :
- name 属性, 每个play的名字
- hosts 属性, 每个play 涉及的被管理服务器,同ad-hoc 中的资产选择器
- tasks 属性, 每个play 中具体要完成的任务,以列表的形式表达
- become 属性,如果需要提权,则加上become 相关属性
- become_user 属性, 若提权的话,提权到哪个⽤户上
- remote_user属性,指定连接到远程节点的⽤户,就是在远程服务器上执⾏具体操作的⽤户。若不指定,则默认使⽤当前执⾏ ansible Playbook 的⽤户
4.一个完整剧本
根据上⼀⼩节中介绍的真实的属性,⼀个含有⼀个Play 的Playbook 应该是如下的样⼦
---
- name: the first play example
hosts: webservers
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
5.tasks属性中任务的多种写法
# 以启动 nginx 服务,并增加开机启动为例
# ⼀⾏的形式:
service: name=nginx enabled=true state=started
# 多⾏的形式:
service: name=nginx
enabled=true
state=started
# 多⾏写成字典的形式:
service:
name: nginx
enabled: true
state: started
6.具有多个Play的Playbook
---
- name: manage web servers
hosts: webservers
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
- name: manager db servers
hosts: db_servers
tasks:
- name: update database confg
copy: src=my.cnf dest=/etc/my.cnf
7.如何对Playbook进行语法校验
下⾯校验的⽅法,只能校验PlayBook是否正确,⽽不能校验YAML⽂件是否语法正确。
ansible-playbook -i hosts myplaybook.yml --syntax -check
因为PlayBook 属于YAML 格式, 我们同样可以使⽤检查YAML的语法格式的⽅法进⾏检查PlayBook的语法正确性。文章来源:https://www.toymoban.com/news/detail-502429.html
python -c 'import yaml,sys;
print yaml.safe_load(sys.stdin)' < myplaybook.yml
8.如何运行Playbook
ansible-playbook -i hosts myplaybook.yml
9.如何单步跟从调试PlayBook
#执⾏Task中的任务,需要⼿动确认是否往下执⾏。
ansible-playbook -i hosts myplaybook.yml --step
10.如何测试运行PlayBook
测试运⾏就是会执⾏完整个PlayBook ,但是所有Task中的⾏为都不会在远程服务器上执⾏,所有执⾏都是模拟⾏为。文章来源地址https://www.toymoban.com/news/detail-502429.html
ansible-playbook -i hosts myplaybook.yml -C
#-C 为⼤写的字⺟ C
到了这里,关于Ansible之Playbook的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!