ansible之playbook(二)

1. playbook(剧本)基本介绍

‘yaml 格式通常以 yml 为扩展名,yaml 对于缩进量没有严格要求,但是有两个基本原则’
‘1.处于同一层次结构中同一级别的数据元素必须具有相同的缩进量’
‘2.如果项目属于其他项目的子项,其缩进量必须大于父项’
##查看指定用户的临时命令

play 本身是一个键值对集合,同一 play 中的键应当使用相同的缩进量’

2 编写和运行playbook

2.1 检测用户是否存在剧本

将这条命令 ansible -m user -a “name=student uid=1000 state=present” servera.lab.example.com
改写为playbook:

ansible之playbook(二)

2.2 安装apache剧本

ansible之playbook(二)
ansible之playbook(二)
测试:
ansible之playbook(二)

2.3 确保服务开机启动剧本

ansible之playbook(二)
ansible之playbook(二)
测试:
ansible之playbook(二)

2.4 提高输出详细程度

ansible-playbook 默认输出不提供详细任务执行信息。-v 参数提供,共四个级别:

-v #显示任务结果
-vv #显示任务结果和任务配置
-vvv #包含关于与受管主机的连接信息
-vvvv #增加连接插件相关的额外详细程度选项(包括受管主机上用于执行脚本的用户及所 执行的脚本)

#执行 playbool 前最好进行语法验证
[[email protected] playdemo]# ansible-playbook --syntax-check webserver.yml
#无语法错误
playbook: webserver.yml
[[email protected] playdemo]# ansible-playbook --syntax-check webserver.yml
#有语法错误,会提示错误位置
ansible之playbook(二)

2.5 预览空运行

空运行会报告执行这个 playbook 将会发生什么,但不会改变目标主机’
ansible之playbook(二)

2.6 安装、配置默认发布页并启动 apache剧本

2.6.1 编写剧本

ansible之playbook(二)
ansible之playbook(二)

2.6.2 检测语法

ansible之playbook(二)

2.6.3 创建配置文件和清单

ansible之playbook(二)

2.6.4 建立发布页面

ansible之playbook(二)
ansible之playbook(二)

2.6.5 执行 playbook

ansible-playbook site.yml
ansible之playbook(二)

2.6.6 测试(关闭两台主机的防火墙)

ansible之playbook(二)
若不想打开网页:
ansible之playbook(二)

3 多剧本

3.1 模板

ansible之playbook(二)

3.2 语法

3.2.1 参数帮助

ansible-doc -l #列出所有模块
ansible-doc yum #列出 yum 的用法和示例
ansible-doc -s yum #终端中输出 yum 模块中各参数的用法

3.2.2 注释

#This is a YAML comment
some data # This is also a YAML comment

3.2.2 字符串

this is a string
‘this is a string’
"this is a string“

3.3 多任务剧本编写

ansible之playbook(二)
ansible之playbook(二)
ansible之playbook(二)
ansible之playbook(二)
ansible之playbook(二)
ansible之playbook(二)
测试:

4.管理变量和事实

将 playbook 中的某些值使用变量代替,从而简化 playbook 的编写
#ansible 变量简介
变量可能包含下面这些值:
要创建的用户、
要安装的软件包、
要重启的服务、
要删除的文件、
要从互联网检索的文档
#命名变量
变量名称必须以字母开头,并且只能含有字母、数字和下划线
错误 正确
web server web_server
westos.file remote_file
1st file file1

4.1管理变量

4.1.1 定义变量

三个范围级别
全局范围:从命令行或 ansible 配置设置的变量(范围广)
play 范围:在 play 和相关结构中设置的变量(范围窄)
主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量
‘如果多个级别上定义了相同名称的变量,优先采用级别最高的变量,窄范围优先于广范围’

4.2 playbook 中的变量

4.2.1 在 playbook 开头的 vars 块定义变量

ansible之playbook(二)
ansible之playbook(二)

4.2.2 在外部文件定义 playbook 变量

vim vars.yml
ansible之playbook(二)
ansible之playbook(二)
ansible之playbook(二)

4.3 在 playbook 中使用变量

将变量名称放在花括号内即可
ansible之playbook(二)