简介
Playbook是由一个或多个“play”组成的列表,可以让它们联同起来按事先编排的机制执行;
所谓task无非是调用ansible 的一个module,而在模块参数中可以使用变量;
模块执行是幂等的,这就意味着多次执行是安全的,因为其结果均一致。
核心组件
- Hosts:执行的远程主机列表
- Tasks:任务,由模块定义的操作的列表;
- Varniables:内置变量或自定义变量在playbook中调用
- Templates:模板,即使用了模板语法的文本文件;
- Handlers:和nogity结合使用,为条件触发操作,满足条件方才执行,否则不执行;
-
YAML格式
playbook文本格式为YAML,是一种标记语言,用来表示数据序列化的格式。
特点
变量的来源
- ansible setup远程主机的所有变量都可以使用
- 自定义变量
优先级
—syntac-check:检查语法
- —check:测试运行
- -t TAGS:指定运行特定的任务
- —skip-tags SKIP_TAGS:跳过哪些标签
handlers和notify结合使用出发条件,让playbook在满足一定条件时才触发某条task
模板
文本文件,内部嵌套有模板语言脚本(使用模板语言编写)
- Jinja2 是由python编写的。在我们打算使用基于文本的模板语言时,jinja2是很好的解决方案。yaml是写 playbook,jinja2是写配置文件模板的
功能:将模板的文件的变量值转换成对应的本地主机的确定值。例如:ansible端写一个内建变量 {{ansible_processor_vcpus }},当这个文件被复制到对应主机时会自动生成对应主机 cpu的颗数的结果替换之。
路径:/etc/ansible/roles
- 每个角色均需要具有如下目录:
- defaults:此目录用于设定默认变量,一般会有一个main.yaml文件
- files:存放用于copy或者script等模块调用的文件
- handlers:定义各种hundlers文件,其他的文件需要进行包含调用
- meta:定义当前角色的特殊设定及其依赖关系,其他的文件需要有main.yaml文件“包含”调用
- tasks:定义各种tasks,一般都会有个main.yaml文件,其他的文件需要有main.yaml文件进行包含调用
- template:定义由template模块文本
- vars:定义各种变量,其他的文件需要进行包含调用
- 调用role
- 定义在site.yaml文件中,在/etc/ansible/role中
