roles角色
最佳组织playbook的方式是通过roles角色的方式来组织
roles:
用一个已知的文件结构(且必须是这样),它会自动加载vars、tasks、handlers、template、更方便进行调用。
在创建新角色时,最关键的便是能够正确理解目录结构。
通俗来说,就是要把正确的信息放入正确的目录中,这样在调用角色时才能有正确的效果。
文件中,只能存在main.yml 这个文件,就是这么定义的。
步骤:
1.创建roles目录结构,手动创建、或者通过 ansible-galaxy init nginx初始化一个,
2.编写yml文件,功能,tasks任务| handlers | templates,
3.写一个playbook,调用该roles。
tree nginx
nginx
├── files #存放的配置文件,用copy可以直接调用
├── handlers #触发器
├── meta #依赖间关系
├── tasks #任务
├── templates #模板文件template可以直接调用
└── vars #变量
安装nginx案例
1.创建roles目录结构
创建nginx目录结构
mkdir nginx /{tasks,handlers,templates} -p
2.编写要执行的任务 (yml文件)
2.1.我这里先写tasks所要执行的任务
vim nginx/tasks/main.yml
1.安装nginx
2.配置nginx
3.启动nginx
注意,这里的templates模板文件的src,直接写相对路径就行,模板文件必须都放在templates文件夹中
notify所调用的handlers,也必须写在handlers目录下的main.yml文件中
2.2.编写notify所调用的handlers的main.yml文件
vim nginx/handlers/main.yml
2.3准备templats目录中的模板文件(也就是Nginx的配置文件)
cp /etc/nginx/nginx.conf nginx/templates/nginx.conf.j2
这里用到了facts变量,先抓取到被控端CPU的核心数的变量,推送配置文件之前,会先把配置文件中的变量进行引用,替换成具体的变量值,最后推送配置文件。
2.4.到此部署nginx所要执行的任务已经写好了
3.写一个playbook,调用该角色(roles)
起的角色名称是什么,这里就调用什么
执行playbook
这种编排方式达到了我们的预期
流程还是一样的安装、配置、启动
只不过是将不同的任务,分类放到不同文件夹下面,让整个目录清晰又层次感