小机灵鬼|自动化运维工具:ansible(二)( 八 )
15、roles1>定义:ansilbe自1.2版本引入的新特性 , 用于层次性、结构化的组织playbook 。 roles能够根据层次型结构自动装载变量文件、tasks以及handlers等 。 要使用roles只需要在playbook中使用include指令即可 。 简单来讲 , roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中 , 并可以便捷地include它们的一种机制 。 角色一般用于基于主机构建服务的场景中 , 但也可以是用于构建守护进程等场景中 。
复杂场景:建议使用roles , 代码复用度高
- 变更指定主机或主机组
- 如命名不规范维护和传承成本大
- 某些功能需多个Playbook , 通过Includes即可实现
每个角色 , 以特定的层级目录结构进行组织
playbook.ymlroles/project/tasks/files/vars/不常用default/不常用templates/handlers/meta/不常用/roles/project/:项目名称 , 有以下子目录files/ : 存放由copy或script模块等调用的文件
templates/ : template模块查找所需要模板文件的目录
tasks/ : 定义task , role的基本元素 , 至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
handlers/ : 至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
vars/ : 定义变量 , 至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
meta/ : 定义当前角色的特殊设定及其依赖关系 , 至少应该包含一个名为main.ymI的文件 , 其它文件需在此文件中通过include进行包含
default/ : 设定默认变量时使用此目录中的main.yml文件
3>使用:
角色(roles):角色集合
roles/(官方建议目录/etc/ansible/roles,不过也可以自定义)
- mysql/
- httpd/
- nginx/
- memcached/
[root@ansible ansible]#tree#构建目录结构 , 如果没有可以mkdir创建目录.└── roles├── httpd├── memcache├── mysql└── nginx5 directories, 0 files[root@ansible ansible]#cd roles/nginx/[root@ansible nginx]#pwd/root/ansible/roles/nginx[root@ansible nginx]#mkdir tasks templates#在roles/nginx创建一个任务目录和模板目录[root@ansible nginx]#lstaskstemplates[root@ansible nginx]#cd tasks/#进入任务tasks目录[root@ansible tasks]#vim group.yml#先创建组文件[root@ansible tasks]#cat group.yml- name: create groupgroup: name=nginx gid=80[root@ansible tasks]#vim user.yml#再创建用户文件[root@ansible tasks]#cat user.yml- name: create useruser: name=nginx uid=80 group=nginx system=yes shell=/sbin/nologin[root@ansible tasks]#vim yum.yml#再创建安装文件[root@ansible tasks]#cat yum.yml- name: install packageyum: name=nginx[root@ansible tasks]#vim start.yml#进而创建启动文件[root@ansible tasks]#cat start.yml- name: start serviceservice: name=nginx state=started enabled=yes[root@ansible tasks]#cp start.yml restart.yml[root@ansible tasks]#vim restart.yml#重启服务文件[root@ansible tasks]#cat restart.yml- name: restart serviceservice: name=nginx state=restarted[root@ansible templates]#cd ../templates/#进入模板templates目录[root@ansible templates]#cp /etc/nginx/nginx.conf nginx.conf.j2#拷贝本机的nginx文件成为模板文件[root@ansible templates]#vim nginx.conf.j2[root@ansible templates]#cd ../tasks/[root@ansible tasks]#lsgroup.ymlrestart.ymlstart.ymluser.ymlyum.yml[root@ansible tasks]#vim templ.yml[root@ansible tasks]#cat templ.yml#回到任务tasks目录 , 创建templ.yml文件- name: copy conftemplate: src=http://kandian.youth.cn/index/nginx.conf.j2 dest=/etc/nginx/[root@ansible roles]#lshttpdmemcachemysqlnginx[root@ansible roles]#cd ../[root@ansible ansible]#lsroles[root@ansible ansible]#vim nginx_role.yml#创建nginx role文件 , 注意必须和roles同级[root@ansible ansible]#cat nginx_role.yml- hosts: allremote_user: rootroles:- role: nginx[root@ansible ansible]#ansible-playbook -C nginx_role.yml#检查语法[root@ansible ansible]#ansible-playbook nginx_role.yml#执行总结:构建目录树结构如下[root@ansible ansible]#tree.├── nginx_role.yml└── roles├── httpd├── memcache├── mysql└── nginx├── tasks│├── group.yml│├── main.yml│├── restart.yml│├── start.yml│├── templ.yml│├── user.yml│└── yum.yml└── templates└── nginx.conf.j27 directories, 9 files
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 小机灵鬼|干货速来!透彻剖析微服务架构设计模式,深入开发Java有奇效
- 中国新闻网|沈阳自动化所牵头制定“WIA-FA”一致性测试国家标准获批
- 科技匠|手把手教你如何使用免费自动化工具——Appium(安卓版)
- 执笔抒情|万茜发文向宁静郁可唯几位姐姐道歉,配图还在抖机灵
- 小机灵鬼|央视重磅关注天府新区这件事
- NBA|原创万茜发文向宁静郁可唯几位姐姐道歉,配图还在抖机灵
- 小机灵鬼|小米截胡?雷军宣布第三代自研屏下摄像头明年量产,中兴黯然失色
- 津爱改装车|我选择的开源运维监控系统-Prometheus
- 小机灵鬼|4K屏设计专业神器!ROG幻15成开学季最香生产力工具
- SpreadJS 应用案例:电力自动化在线数据采集报表系统
