Ansible之Playbook

1.简介

Playbook 也通常被⼤家翻译成剧本。
可以认为它是Ansible ⾃定义的⼀⻔语⾔(可以将 Playbook ⽐作Linux 中的 shell,⽽ Ansible 中的 Module 可以⽐作为 Linux 中的各种命令。)

2.Play的定义

PlayBook遵循YAML 的语法格式。
由于Playbook 是由⼀个或者多个Play组成,那么如果我们熟悉Play的写法,就⾃然掌握了我们这章的PlayBook。
那如何定义⼀个Play呢 ?

  1. 每⼀个Play 都是以短横杠开始的
  2. 每⼀个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的语法正确性。

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中的⾏为都不会在远程服务器上执⾏,所有执⾏都是模拟⾏为。

ansible-playbook -i hosts myplaybook.yml -C
#-C 为⼤写的字⺟ C
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是少爷.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值