Template模块:
基于Python的jinja模版架构,通过模板可以实现向模板文件传参(Python转义)把占位符参数传到配置文件当中去
Jinjia生成一个目标文本文件,然后传递变量到需要配置文件当中(用于web开发)
修改配置文件
修改hosts
写一个yml脚本
运行脚本
验证查看,去目标主机
已经修改完成
小结一下:
Httpd.conf.j2 在文件当中配置的是占位符(声明的变量)
/etc/ansible/hosts 配置了主机的占位符名称和j2文件当中的站位符一致(定义参数:占位符的参数的声明好)
Playbook当中,template模块来把参数传给目标主机的配置文件
例题:同理修改nginx,根据上图需求
目标主机查看:
修改hosts
Tags模块,
又叫标签模块,可以在playbook当中为任务设定标签(tags),我们在运行playbook时可以通过指定任务标签,来实现只允许设定的标签任务
例如:
-name:
Tag:
Debug
--tags debug
任务标签的种类:
Always:不管是否指定了标签,任务都会执行
Never:即始运行了指定标签,该任务也不会执行
Debug:调试任务
Setup:收集主机信息
自定义标签
Per_tasks:指定标签之前的任务
Post_tasks:运行指定标签之后的任务
演示一下:
playbook还提供了一个特殊的tags为always。作用就是当使用always作为tags的task时,无论执行哪一个tags时,定义有always的tags都会执行。
自定义标签,
也可以运行,但是不能用中文
例题:
指定标签运行
Roles模块,又叫角色
角色:ansible层次化,结构化的组织playbook,使用了roles(角色)
可以根据层次结构,自动装载变量文件,task,以及handler等等
Roles:分别把变量 文件 任务 模块 以及处理器,放在单独的目录当中,使用role模块来一键调用这些文件
Roles:
-----web----总目录,角色
File:存放copy和script模块调用的文件
Templates 存放j2的模板文件
Tasks:包含任务的目录
------main.yml 角色运行的任务
Handlers:包含处理器的目录
-------main.yml
Vars:存放变量的目录
------main.yml
Defaults:包含默认变量的目录
------main.yml
Meta:包含元信息的目录
------main.yml
Site.yml:用来统筹调用所有的配置文件
如何来实现roles:
三个服务:
http
MySQL
PHP
每个目录创建剧本
httpd模块
第二个模块,MySQL模块
第三个角色php模块
回到roles:导演节目
运行脚本