ansible基础-ansible角色的使用
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
我们建议把多个节点都会用到的功能将其定义模块,然后谁要用到该模块就直接调用即可!而在ansible中它有一个特有的名称,即角色。
一.角色相关概念
1>.每个角色都是以特定的层级目录结构进行组织
我们知道ansible可以自定义模块,便于自己或他人调用,它也有一个特有的名称叫做角色。每个角色对应的服务可能不太一样,比如mysql,httpd,nginx,memcached。虽然每个角色(模块)的功能不一样,但是他们都以特定的目录结构进行组织,相关说明如下所述:
files:
存放由copy或script模块等调用的文件。
templates:
template模块查找所需要模板文件的目录。
tasks:
用于定义任务,至少应该包含一个名为main.yml的文件(类似于java和go等编译性语言,用于指定程序的入口),其他的文件需要在此文件中通过include进行包含。
handlers:
定义处理器,至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含。
vars:
定义变量,至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含。
meta:
定义元数据,至少应该包含一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系,其他的文件需要在此文件中通过include进行包含。
default:
设定模式变量时使用此目录中的main.yml文件。
2>.playbook调用角色方法
在playbook调用角色方法1: - hosts: web remote_user: root roles: - mysql - memcached - nginx 在playbook调用角色方法2:传递变量给角色 - hosts: web remote_user: root roles: - mysql - memcached - nginx
3>.ansible默认存放路径
[root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# grep roles_path /etc/ansible/ansible.cfg roles_path = /etc/ansible/roles:/usr/share/ansible/roles [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
二.角色实战案例一
1>.创建初始化目录(所有目录不一定都必须存在,如果用不到对应的功能咱们也可以不创建)
[root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# mkdir -pv ./{nginx,tomcat,redis,memcached}/{files,templates,tasks,handlers,vars,meta,default} mkdir: created directory ‘./nginx’ mkdir: created directory ‘./nginx/files’ mkdir: created directory ‘./nginx/templates’ mkdir: created directory ‘./nginx/tasks’ mkdir: created directory ‘./nginx/handlers’ mkdir: created directory ‘./nginx/vars’ mkdir: created directory ‘./nginx/meta’ mkdir: created directory ‘./nginx/default’ mkdir: created directory ‘./tomcat’ mkdir: created directory ‘./tomcat/files’ mkdir: created directory ‘./tomcat/templates’ mkdir: created directory ‘./tomcat/tasks’ mkdir: created directory ‘./tomcat/handlers’ mkdir: created directory ‘./tomcat/vars’ mkdir: created directory ‘./tomcat/meta’ mkdir: created directory ‘./tomcat/default’ mkdir: created directory ‘./redis’ mkdir: created directory ‘./redis/files’ mkdir: created directory ‘./redis/templates’ mkdir: created directory ‘./redis/tasks’ mkdir: created directory ‘./redis/handlers’ mkdir: created directory ‘./redis/vars’ mkdir: created directory ‘./redis/meta’ mkdir: created directory ‘./redis/default’ mkdir: created directory ‘./memcached’ mkdir: created directory ‘./memcached/files’ mkdir: created directory ‘./memcached/templates’ mkdir: created directory ‘./memcached/tasks’ mkdir: created directory ‘./memcached/handlers’ mkdir: created directory ‘./memcached/vars’ mkdir: created directory ‘./memcached/meta’ mkdir: created directory ‘./memcached/default’ [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# [root@node101.yinzhengjie.org.cn /etc/ansible/roles]# tree . . ├── memcached │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars ├── nginx │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars ├── redis │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ └── vars └── tomcat ├── default ├── files ├── handlers ├── meta ├── tasks ├── templates └── vars 32 directories, 0 files [root@node101.yinzhengjie.org.cn /etc/ansible/roles]#