Ansible角色定制—roles
来源:互联网 发布:linux shell 输出日志 编辑:程序博客网 时间:2024/05/16 09:37
本文承接本人的上一篇博文: Ansible playbook简介与配置
有需要的可以前去查看!!
角色定制:roles
对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web、db、ha 时或不同服务器组合不同的应用就需要写多个yml文件。很难实现灵活的调用。
roles 用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量(vars)、文件(file)、任务(tasks)、模块(modules)及处理器(handlers)放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。
roles目录结构
需要在/etc/ansible/roles
目录下创建需要设置的服务文件目录:
/etc/ansible/roles/{mysql,tomcat,nginx}/
files/:存储由copy或script等模块调用的文件;tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由main.yml进行“包含”调用;vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;templates/:存储由template模块调用的模板文本;meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用;default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;
实现步骤:
1、在roles目录下生成对应的目录结构
[root@CentOS7-master ~]# mkdir -pv /etc/ansible/roles/{nginx,mysql,tomcat}/{files,templates,vars,tasks,handlers,meta,default}
2、定义 /etc/ansible/roles/nginx/tasks/main.yml 的配置文件
[root@CentOS7-master ~]# vim /etc/ansible/roles/nginx/tasks/main.yml- name: cp copy: src=nginx-1.10.2-1.el7.ngx.x86_64.rpm dest=/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm- name: install yum: name=/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm state=latest- name: conf template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf tags: nginxconf notify: new conf to reload- name: start service service: name=nginx state=started enabled=true
3、修改变量文件 /etc/ansible/roles/nginx/vars/main.yml
[root@CentOS7-master ~]# vim /etc/ansible/roles/nginx/vars/main.ymlnginxort: 8888 #该变量在此文件中定义后,会在nginx.conf.j2文件中被引用
4、定义 /etc/ansible/roles/nginx/handlers/main.yml 文件
[root@CentOS7-master ~]# vim /etc/ansible/roles/nginx/handlers/main.yml- name: new conf to reload service: name=nginx state=restarted
5、定义 /etc/ansible/roles.yml 的playbook文件
[root@CentOS7-master ~]# vim /etc/ansible/roles.yml- hosts: nginx remote_user: root roles: - nginx
6、可以通过 /etc/ansible/roles.yml 传递变量
[root@CentOS7-master ~]# vim /etc/ansible/roles.yml- hosts: nginx remote_user: root roles: - { role: nginx, nginxport: 12345 }
7、也可以配置多个角色
[root@CentOS7-master ~]# vim /etc/ansible/roles.yml- hosts: nginx remote_user: root roles: #- { role: nginx, nginxport: 12345 } - { role: memcached }
文件目录结构:
[root@CentOS7-master ~]# tree /etc/ansible//etc/ansible/├── ansible.cfg├── hosts├── roles│ ├── mysql│ │ ├── default│ │ ├── files│ │ ├── handlers│ │ ├── meta│ │ ├── tasks│ │ ├── templates│ │ └── vars│ ├── nginx│ │ ├── default│ │ ├── files│ │ ├── handlers│ │ │ └── main.yml│ │ ├── meta│ │ ├── tasks│ │ │ └── main.yml│ │ ├── templates│ │ └── vars│ │ └── main.yml│ └── tomcat│ ├── default│ ├── files│ ├── handlers│ ├── meta│ ├── tasks│ ├── templates│ └── vars└── roles.yml25 directories, 8 files
- Ansible角色定制—roles
- 自动化运维工具Ansible之playbooks剧本及roles角色定制
- Ansible roles
- ansible 自动化运维实现角色定制
- ansible学习笔记(一) -- roles
- ansible学习笔记(二) -- roles
- 创建和管理角色(Roles)
- 项目经理的角色(Roles of Project Manager)
- 项目经理的角色(Roles of Project Manager)
- 项目经理的角色(Roles of Project Manager)
- 项目经理的角色(Roles of Project Manager)
- 彻底解决Forms验证角色(roles)问题
- EJB-Application roles:(应用角色)
- WordPress的角色(Roles)特点
- Secure Application Roles--安全角色
- 利用net本身的角色类生成角色(Roles)
- MongoDB用户和角色管理(源自对官方文档的翻译并总结——Manage Users and Roles)
- 自己定制角色
- java中字符串转集合
- 【HNOI2011】数学作业
- EasyDemo*ViewAnimator及其子类体系结构图(on Github)
- 链表
- 友元类
- Ansible角色定制—roles
- 如何设计一款APP的登录模块
- I/O多路转换 select
- Object-Oriented Technology.pd 英文原版 免费下载
- IOS AFNetworking各种功能封装类
- baidu apollo(1)—启动环境分析
- EasyDemo*ExpandableListView及其子类体系结构图(on Github)
- C/C++ 函数指针、虚函数、纯虚函数
- Clojure Applied.pdf 英文原版 免费下载