ansible的roles
roles 不管是Ansible还是saltstack,我在写一键部署的时候,都不可能把所有的步骤全部写入到一个'剧本'文件当中,我们肯定需要把不同的工作模块,拆分开来,解耦,那么说到解耦,我们就需要用到 roles 官方推荐,因为 roles 的目录结构层次更加清晰。
例如:我们之前推荐大家写一个 base.yml 里面写所有基础优化的项目,其实把所有东西摞进去也是很鸡肋的,不如我们把这些功能全部拆分开,谁需要使用,就调用即可。
建议:每个roles最好只使用一个tasks这样方便我们去调用,能够很好的做到解耦。
目录结构
group_vars/ # 主机群组的变量
group1.yml # here we assign variables to particular groups
group2.yml
host_vars/ # 单台主机的变了
hostname1.yml # here we assign variables to particular systems
hostname2.yml
library/ # if any custom modules, put them here (optional)
module_utils/ # if any custom module_utils to support modules, put
them here (optional)
filter_plugins/ # if any custom filter plugins, put them here
(optional)
site.yml # master playbook # 入口文件 回去调用roles一些目录
webservers.yml # playbook for webserver tier
- 部署web的
dbservers.yml # playbook for dbserver tier
- 部署数据库的
roles/
common/ # 项目的名称
tasks/ ## 所有的任务全部写在tasks
main.yml ## 写到main.yml
warranted
handlers/ ## 触发器
main.yml # <-- handlers file
templates/ # <-- # 里面放带有变量的配置文件
ntp.conf.j2
files/ ## 放不带变量的配置文件
bar.txt # <--
foo.sh # <--
vars/ ## 变量
main.yml # <-- variables associated with this role
defaults/ ## 优先级比较低的变量
main.yml # <-- default lower priority variables for this role
meta/ ## 依赖 wordpress nginx php mariadb
main.yml # <-- role dependencies
library/ # roles can also include custom modules
module_utils/ # roles can also include custom module_utils
lookup_plugins/ # or other types of plugins, like lookup in this case
webtier/ # same kind of structure as "common" was above, donefor the webtier role
monitoring/ # ""
fooapp/ # ""