当前位置: 首页 > news >正文

ansible中roles角色是什么意思?

文章目录

  • 一、介绍
  • 二、Ansible Roles目录编排
  • 三、创建role
  • 四、playbook调用角色
  • 五、roles中tags使用

免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn

在这里插入图片描述

一、介绍

角色是ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。

要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。

角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。

运维复杂的场景:建议使用 roles,代码复用度高。

roles:多个角色的集合目录, 可以将多个的role,分别放至roles目录下的独立子目录中,如下示例:

roles/mysql/nginx/tomcat/redis/

默认roles存放路径

/root/.ansible/roles
/usr/share/ansible/roles
/etc/ansible/roles

二、Ansible Roles目录编排

roles目录结构如下所示:

在这里插入图片描述

每个角色,以特定的层级目录结构进行组织

roles目录结构:

playbook.yml 
roles/project/tasks/files/vars/templates/handlers/default/meta/

Roles各目录作用:

  • roles/project/:项目名称,有以下子目录

  • files/:存放由copy或script模块等调用的文件

  • templates/:template模块查找所需要模板文件的目录

  • tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含

  • handlers/:至少应该包含一个名为main.yml的文件;此目录下的其它的文件需要在此文件中通过include进行包含

  • vars/:定义变量,至少应该包含一个名为main.yml的文件;此目录下的其它的变量文件需要在此文件中通过include进行包含

  • meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为main.yml的文件,其它文件需在此文件中通过include进行包含

  • default/:设定默认变量时使用此目录中的main.yml文件,比vars的优先级低

三、创建role

创建role的步骤:

  • 创建以roles命名的目录

  • 在roles目录中分别创建以各角色名称命名的目录,如mysql等

  • 在每个角色命名的目录中分别创建files、handlers、tasks、templates和vars等目录;用不到的目录可以创建为空目录,也可以不创建

  • 在每个角色相关的子目录中创建相应的文件,如 tasks/main.yml,templates/nginx.conf.j2

  • 在playbook文件中,调用需要的角色

针对大型项目使用Roles进行编排

例:roles的目录结构

nginx-role.yml 
roles/
└── nginx├── files│    └── main.yml├── tasks│    ├── groupadd.yml│    ├── install.yml│    ├── main.yml│    ├── restart.yml│    └── useradd.yml└── vars└── main.yml

四、playbook调用角色

  • 调用角色方法1:
---
- hosts: websrvs  remote_user: rootroles:- mysql- memcached- nginx
  • 调用角色方法2:键role用于指定角色名称,后续的k/v用于传递变量给角色
---
- hosts: allremote_user: rootroles:- mysql- { role: nginx, username: nginx }
  • 调用角色方法3:还可基于条件测试实现角色调用
---
- hosts: allremote_user: rootroles:- { role: nginx, username: nginx, when: ansible_distribution_major_version== '7'  }

五、roles中tags使用

[root@ansible ~]#vi app-role.yml
---
- hosts: appsrvsremote_user: rootroles:- { role: nginx ,tags: [ 'nginx', 'web' ] ,when: ansible_distribution_major_version == "6" }- { role: httpd ,tags: [ 'httpd', 'web' ]  }- { role: mysql ,tags: [ 'mysql', 'db' ] }- { role: mariadb ,tags: [ 'mariadb', 'db' ] }[root@ansible ~]#ansible-playbook --tags="nginx,httpd,mysql" app-role.yml

请不要以此视为定论,这只是我的个人经验

http://www.dtcms.com/a/341632.html

相关文章:

  • 详解flink table api基础(三)
  • 【网络】使用 DNAT 进行负载均衡时,若未配置配套的 SNAT,回包失败
  • 猫头虎开源AI分享|基于大模型和RAG的一款智能text2sql问答系统:SQLBot(SQL-RAG-QABot),可以帮你用自然语言查询数据库
  • Three.js 初级教程大全
  • 分享|财务大数据实验室建设方案
  • 机器学习(Machine Learning, ML)
  • Web网站的运行原理2
  • Ubuntu实现程序开机自动运行
  • AI每日需求进度分析总结(附实战操作)
  • 云原生环境下的ITSM新趋势:从传统运维到智能化服务管理
  • 政务网站与新媒体自查情况的报告怎么写?
  • 【ssh】ssh免密登录配置【docker】
  • STM32_0001 KEILMDK V5.36 编译一个STM32F103C8T6说core_cm3.h文件找不到以及编译器版本不匹配的解决办法
  • 25_基于深度学习的行人检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 详解ThreadLocal<HttpServletRequest> requestThreadLocal
  • Kernel Study
  • 关联规则挖掘1:Apriori算法
  • Deepresearch Agents:下一代自动研究智能体的架构革命与产业实践
  • CAMEL-Task1-CAMEL环境配置及你的第一个Agent
  • postgreSQL卸载踩坑
  • Kolors Virtual Try-On:快手可图推出的AI虚拟换衣项目
  • JAVA中向量数据库(Milvus)怎么配合大模型使用
  • 简笔成画:让AI绘画变得简单而有趣
  • pyecharts可视化图表仪表盘_Gauge:从入门到精通
  • 【Linux】重生之从零开始学习运维之LVS
  • UUID(通用唯一标识符)详解和实践
  • 今日行情明日机会——20250820
  • K8S集群-基于Ingress资源实现域名访问
  • 软件测试面试题真题分享
  • 华为云之基于鲲鹏弹性云服务器部署openGauss数据库【玩转华为云】