Ansible -03 playbook

目录

一、前言

二、 YAML 学习

2.1 字符串

三、 如何写 playbook

3. 一个完整剧本

4. tasks 属性中任务的几种写法

5. 含有多个Play 的 Playbook 

6. 语法校验。

7. 运行PlayBook

8. 测试运行


一、前言

1、 命令行方式执行 ansible 的缺点

执行过的任务不法保留下来,不便于重用。
对于一些复杂的任务,无法完成。比如多个任务之间存在一定逻辑性或者说有一定依赖性。
示例:安装 Nginx,配置 Nginx,启动 Nginx 服务一系列操作。

2、 什么是 PlayBook

Playbook 在 Ansible 中成为 剧本。

可以认为它是Ansible 自定义的一门语言。
可以将 Playbook 比作 Linux 中的 shell 脚本。
 

二、 YAML 学习

Playbook遵循YAML 的语法格式。

1. YAML 文件的规范

以 # 为注释符
以 .yml 或者 .yaml 结尾
以--- 开始 , 以 ... 结束, 但这不是必须的
2. 基本语法

大小写敏感
使用缩进表示层级关系
缩进时是使用Tab键还是使用空格一定要达到统一,建议使用空格。
相同层级的元素必须左侧对齐
YAML 支持的数据表示形有:

字符串
列表
字典
 

2.1 字符串

---
# YAML 中的字符串可以不使用引号,即使里面存在空格的时候,当然了使用单引号和双引号也没有错。
this is a string
'this is a string'
"this is a string"
# YAML 中若一行写不下你要表述的内容,可以进行折行。写法如下:
long_line: | 
		Example 1
		Example 2
		Example 3
# 或者
long_line: >
		Example 1
		Example 2
		Example 3	
...

2.2 列表

相当于shell中数组

- red
- green
- blue
...

2.3  字典

就是一个变量名对应一个变量的值

---
# 如何定义: key + 冒号(:) + 空格 + 值(value), 即 key: value

name: Using Ansible
code: D1234
...

2.4 混合结构

---
class:
  - name: stu1
    num: 001
  - name: stu2
    num: 002
  - name: stu3
    num: 003
...

三、 如何写 playbook

1. Play

由于Playbook 是由一个或者多个Play组成,那么如果我们熟悉Play 的写法,就自然掌握了我们这章的PlayBook。

那如何定义一个Play

1、每一个Play 都是以短横杠开始的
2、每一个Play 都是一个YAML 字典格式

根据上面两条Play 的规则,一个 Play 应该是类似如下的样子
 

---
- name: shark
  hosts: all
...

由于一个Playbook 是由一个或者多个Play构成, 那么一个含有多个Play的Playbook 结构上应该是如下的样子

---
# 一个含有3个Play 的伪PlayBook构成
- name: create a user
  hosts: nginx
  key3: value3
- name: copy  a file to webNginx
  hosts: webNginx
  key3: value3

...

2. Play 的属性

以上一小节中的Play为基础, Play中的每一个key, key1、key2、key3等;这些key在PlayBook中被定义为Play的属性。这些属性都具有特殊的意义,我们不能随意的自定义Play 的属性。那么Ansible本身都支持哪些Play属性呢
 

常用属性

(1)、name 属性, 每个play的名字
(2)、hosts 属性, 每个play 涉及的被管理节点,同命令行执行时候的 主机匹配模式
(3)、tasks 属性, 每个play 中具体要完成的任务,以列表的形式表达
(4)、become 属性,如果需要提权,则加上become 相关属性
(5)、become_user 属性, 若提权的话,提权到哪个用户上
(6)、remote_user属性,指定连接用户。若不指定,则默认使用当前执行 ansible Playbook 的用户
 

3. 一个完整剧本

根据上一小节中介绍的真实的属性,一个含有一个Play 的 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. tasks 属性中任务的几种写法

# 以启动 nginx 服务,并增加开机启动为例
# 一行的形式:
service: name=nginx enabled=true state=started

# 多行写成字典的形式:
service:
  name: nginx
  enabled: true
  state: started

5. 含有多个Play 的 Playbook 

---
- name: manage web servers
  hosts: webNginx
  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: webNginx
  tasks:
    - name: update database confg
      copy: src=my.cnf dest=/etc/my.cnf        

6. 语法校验。

如果再运行启动错误影响较大的服务,建议先进行语法校验
ansible-playbook myplaybook.yml --syntax-check

7. 运行PlayBook

ansible-playbook myplaybook.yml

8. 测试运行

// 会执行完整个PlayBook ,但是所有Task中的行为都不会在远程服务器上执行,所有执行都是模拟行为。
ansible-playbook myplaybook.yml -C
// -C 为大写的字母 C

weixin028基于微信小程序小说阅读器设计+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值