本文共 1619 字,大约阅读时间需要 5 分钟。
一.角色(roles)介绍
角色定制:roles 对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web、db、ha 时或不同服务器组合不同的应用就需要写多个yml文件。很难实现灵活的调用。roles 用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用
roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量(vars)、文件(file)、任务(tasks)、模块
(modules)及处理器(handlers)放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。
roles可以写在默认的/etc/ansible/下,也可以是任意地方
创建roles
roles编排
示例:
二.目录结构
目录编排
目录结构
各目录作用
三.实例练习
1.创建nginx_roles
查看目录结构:主剧本
nginx下的任务tasks
nginx下的模板templates
测试正常
[root@server1 ansible]# ansible-playbook -C nginx_role.yml执行nginx_roles剧本调用角色
检测正常
2.创建httpd_roles角色
简单练习,2个任务,一个复制文件,一个创建apache用户目录结构剧本内容
还有一个未修改的httpd配置文件
执行主角色文件httpd_role
检测正常
3.同时执行nginx和httpd角色,模拟同一个机子执行两种角色
前面的两个例子不变,再写一个执行剧本some_role.yml里面的roles写上2个,一个是nginx,一个是httpd即可4.跨项目执行任务
如下,执行nginx角色任务的时候还想执行httpd下的copyfile.yml任务只需修改nginx里面的任务顺序里面加上一条即可
注:这个httpd里的copyfile.yml任务里的原路径要改成绝对路径,因为nginx这个角色里面没有这个httpd.conf文件,到时候会报错
执行正常
[root@server1 ansible]# ansible-playbook -C nginx_role.yml4.角色剧本中的标签
模拟举例:复制一个app角色修改主剧本文件,后面加上标签
执行,-t指定标签,只会运行web标签的内容,不会运行app标签的内容
5.在roles添加条件when
[root@server1 ansible]# ansible-playbook some_role.yml四.综合项目练习
创建apache服务,要求变量调用修改默认端口和用户,拷贝vhosts文件,修改配置文件重启服务1.在上面的项目基础上新建app roles
2.app项目目录结构
3.项目中的文件内容
files中的vhosts.conf没有任何改动,只是拷贝文件模板文件是httpd.conf的配置文件,其中修改端口为cpu个数的十倍,用户调用变量文件,使用app
变量文件app主剧本角色文件
4.执行测试[root@server1 ansible]# ansible-playbook app_role.yml五.memcached角色练习
1.练习需求正常安装,memcached的默认占用内存的大小为64M,练习需要根据不同主机的内存大小,设置为主机内存的1/4大小2.用setup模块查看两台远程主机的内存
3.修改templates文件
4.目录结构5.文件内容
主剧本memcached_role.yml文件:6.执行测试
转载于:https://blog.51cto.com/anfishr/2311376