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.pswp.cn/diannao/96506.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch 网络可视化

1.torchsummary在 Anaconda prompt 中进入自己的 pytorch 环境,安装依赖包。 bash pip install torchsummary 2.tensorboardX 3. graphviz torchviz 4.Jupyter Notebook tensorwatch 5.netron 6.hiddenlayer 7.PlotNeuralNet

可以一键生成PPT的AI PPT工具(最新整理)

在当今快节奏的职场环境中,高效制作专业PPT已成为一项必备技能。传统PPT制作流程耗时费力,从构思大纲、搜集资料、撰写内容到设计排版,往往需要数小时甚至数天时间。AI生成PPT工具的兴起彻底改变了这一局面,让职场人士能够专注于内…

数仓核心概念阐述

数仓核心概念阐述一、数据仓库建模模型二、数据处理架构三、流批处理架构演进**为什么需要流批融合?****1. Lambda 架构(双引擎护航)****2. Kappa 架构(流处理一统江湖)****关键概念对照表****实际案例理解****演进趋势…

Spring Boot 自动配置全流程深度解析

在 Spring Boot 的世界里,“约定优于配置” 理念通过自动配置机制展现得淋漓尽致。从一个简单的SpringBootApplication注解开始,背后隐藏着一套精妙的自动配置加载流程。本文将从SpringBootApplication出发,逐步拆解自动配置类是如何被发现、…

AI:业务驱动与技术赋能:企业智能化应用的双向进化深度指南

一、业务与技术的双螺旋进化模型 1.1 从单向适配到双向驱动的认知转变 传统的信息化建设往往遵循"业务提需求、技术做实现"的线性模式,这种模式在稳定的业务环境中确实有效,但在当前快速变化的数字化时代已经显露出明显的局限性。真正的数字化…

2721. 【SDOI2010】外星千足虫

2721. 【SDOI2010】外星千足虫 题解 题目描述 题目描述 公元2089年6月4日,在经历了17年零3个月的漫长旅行后,“格纳格鲁一号”载人火箭返回舱终于安全着陆。此枚火箭由美国国家航空航天局(NASA)研制发射,行经火星、…

[RestGPT] RestGPT智能体

第3章:RestGPT智能体 欢迎回来🐻‍❄️ 在第1章:配置与环境中,我们为RestGPT配备了必要的"钥匙和密码";在第2章:OpenAPI规范(OAS)中,我们为它提供了与在线服务对话的"使用说明…

笔记本电脑Windows+Ubuntu 双系统,Ubuntu无法挂载Windows的硬盘 报错问题解决

目录 一、前情提要 二、解决方案步骤 第一步:进入Windows进行修复和检查。这是最关键的一步,目的是让Windows来检查和修复它自己的文件系统。 第二步:回到Ubuntu验证挂载 三、总结与预防 一、前情提要 网上找到许多解决方案&#xff0c…

加密货币与区块链:六大刑事重灾区

高鹏律师(首席数据官)数字经济团队创作,AI辅助在数字货币的世界里,一夜暴富的传说屡见不鲜,但顷刻间失去所有的悲剧也时有发生,现在,我将为您剖析加密货币与区块链领域的六大刑事风险重灾区&…

Spring Ai 1.0.1中存在的问题:使用MessageChatMemoryAdvisor导致System未被正确的放在首位

使用MessageChatMemoryAdvisor导致System未被正确的放在首位 如下是使用Spring Ai实现多轮对话的官方例子(文档地址:https://docs.spring.io/spring-ai/reference/api/chat-memory.html):AutowiredChatMemoryRepository chatMemor…

全景式综述|多模态目标跟踪全面解析:方法、数据、挑战与未来

【导读】 目标跟踪(Visual Object Tracking, VOT)一直是计算机视觉领域的核心问题之一,广泛应用于自动驾驶、无人机监控、人机交互等场景。随着单模态方法在复杂环境下逐渐遇到瓶颈,多模态视觉目标跟踪(Multi-Modal V…

怎么用pytorch训练一个模型,并跑起来

MNIST 手写数字识别 任务描述 MNIST 手写数字识别是机器学习和计算机视觉领域的经典任务,其本质是解决 “从手写数字图像中自动识别出对应的数字(0-9)” 的问题,属于单标签图像分类任务(每张图像仅对应一个类别&#x…

Qt应用程序发布方式

解决的问题:在自己电脑上用QT Creator编译的exe文件放到其他电脑上不能正常打开的问题。1、拷贝已经编译好的exe应用程序到桌面文件夹。桌面新建文件夹WindowsTest,并且将编译好的软件WindowTest.exe放入此文件夹中。2、在此文件夹空白处按住Shift再点击…

Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字

1. 学习目的实现 不同主机之间的进程间通信。在 Linux 下,进程间通信(IPC)不仅可以发生在同一台主机上,也可以通过网络实现不同主机之间的通信。要做到这一点,必须同时满足以下两个条件:物理层面&#xff1…

5.Kotlin作用于函数let、run、with、apply、also

选择建议 需要返回值:使用 let、run 或 with配置对象:使用 apply附加操作:使用 also非空检查:使用 let链式调用:使用 let 或 run Kotlin作用域函数详解 概述 Kotlin提供了5个作用域函数:let、run、with、ap…

嵌入式学习日记(32)Linux下的网络编程

1. 目的不同主机,进程间通信。2. 解决的问题1). 主机与主机之间物理层面必须互联互通。2.) 进程与进程在软件层面必须互联互通。IP地址:计算机的软件地址,用来标识计算机设备 MAC地址:计算机的硬件地址&…

C#_接口设计:角色与契约的分离

2.3 接口设计:角色与契约的分离 在软件架构中,接口(Interface)远不止是一种语言结构。它是一份契约(Contract),明确规定了实现者必须提供的能力,以及使用者可以依赖的服务。优秀的接…

vsCode或Cursor 使用remote-ssh插件链接远程终端

一、Remote-SSH介绍Remote-SSH 是 VS Code 官方提供的一个扩展插件,允许开发者通过 SSH 协议连接到远程服务器,并在本地编辑器中直接操作远程文件,实现远程开发。它将本地编辑器的功能(如语法高亮、智能提示、调试等)与…

C语言实战:从零开始编写一个通用配置文件解析器

资料合集下载链接: ​https://pan.quark.cn/s/472bbdfcd014​ 在软件开发中,我们经常需要将一些可变的参数(如数据库地址、端口号、游戏角色属性等)与代码本身分离,方便日后修改而无需重新编译整个程序。这种存储配置信息的文件,我们称之为配置文件。 一、 什么是配置…

车机两分屏运行Unity制作的效果

目录 效果概述 实现原理 完整实现代码 实际车机集成注意事项 1. 显示系统集成 多屏显示API调用 代码示例(AAOS副驾屏显示) 2. 性能优化 GPU Instancing 其他优化技术 3. 输入处理 触控处理 物理按键处理 4. 安全规范 驾驶员侧限制 乘客侧…