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

40,.Ansible角色(roles)

Ansible角色(roles)

Ansible 角色是一种组织 Playbook 的高级方式。它将变量、任务、文件、模板和处理器等组件,按照特定的目录结构进行分组,使其成为一个独立的、可复用的单元

使用角色主要有以下好处:

  1. 模块化与可复用性:将配置分解为多个角色,每个角色功能单一。可以在多个 Playbook 或项目中重复使用同一个角色。
  2. 代码组织与清晰度:复杂的 Playbook 会变得很长,难以维护。角色将代码分割到不同的文件中,结构清晰,易于管理。
  3. 协作与共享:角色可以独立版本化,并通过 Ansible Galaxy(一个官方的角色共享平台)进行分享和获取。
  4. 易于测试:可以单独测试每个角色的功能

当使用 ansible-galaxy role init my_role 命令创建一个新角色时,它会生成以下标准结构

目录/文件关键特性使用建议
tasks/main.yml核心,必须存在保持逻辑清晰,可拆分为子文件。
defaults/main.yml优先级最低的变量定义所有用户可配置的变量,提供合理的默认值。
vars/main.yml优先级高的变量仅用于角色内部固定值。
handlers/main.ymlnotify 触发通常用于服务重启、重载。
templates/动态配置文件使用 .j2 后缀,模板内变量名与 defaults/vars/ 中定义的一致。
files/静态文件存放无需动态变化的文件。
meta/main.yml定义依赖和元数据准确声明依赖和支持的平台,便于分享。
README.md角色的使用手册查看角色使用方法

1.自定义角色

[student@master roles]$ ansible-galaxy init apache
[student@master roles]$ cd apache/

在这里插入图片描述

可以在vars里面给角色定义变量,在vars里面定义的变量>在defaults里面定义的变量

可以在tasks里面写任务

[student@master apache]$ vim tasks/main.yml
---
# tasks file for apache
- name: de1yum:name: httpdstate: present

编写一个剧本使用角色

[student@master ansible]$ vim http.yml
---
- name: httpd installhosts: node1roles: - apache

在这里插入图片描述


执行顺序
  1. pre_tasks 总是最先运行
  2. roles: 列表中的角色是作为一个整体,在 pre_tasks 之后、tasks 之前运行的
  3. tasks 中的任务在角色之后运行
  4. post_tasks 总是最后运行
  5. Handlers 在整个 Play 的末尾被统一触发执行,与它们在 pre_tasks, roles, tasks 还是 post_tasks 中被通知(notify)无关

系统角色

系统角色是由红帽(Red Hat) 发起并维护的一个官方、高质量的 Ansible 角色集合,旨在对 Linux 系统的基础组件进行标准化和自动化配置。

[student@master ansible]$ sudo yum install rhel-system-roles -y
角色名称主要功能关键特性
rhel-system-roles.kdump配置 kdump 崩溃恢复服务设置内核崩溃转储、配置内存保留大小、指定转储文件位置
rhel-system-roles.network配置网络接口管理以太网、桥接、绑定、VLAN 等接口;替代传统 network-scripts
rhel-system-roles.selinux配置和管理 SELinux设置 SELinux 模式( enforcing/permissive/disabled )、管理文件上下文、端口标签和布尔值
rhel-system-roles.timesync配置时钟同步支持 Chrony、NTP 和 Systemd-timesyncd;配置 NTP 服务器和参数
rhel-system-roles.postfix配置邮件传输代理使用 Postfix 服务配置主机为 MTA;设置域、网络和安全性选项
rhel-system-roles.firewall配置主机防火墙管理 firewalld zones/services/ports;支持丰富规则和端口转发
rhel-system-roles.tuned系统性能调优配置 Tuned 性能配置文件;自定义调优设置以适应不同工作负载

ansible-galaxy安装角色

默认情况下,角色安装到用户的roles_path下的第一个可写目录中。根据ansible设置的默认roles_path,角色通常安装到用户的~/.ansible/roles目录。默认的roles_path可能会被当前的ansible配置文件或环境变量ANSIBLE_ROLES_PATH覆盖,这将影响ansible-galaxy的行为

可以使用-p DIRECTORY选项,指定具体的目录来安装角色。

1.把需要安装的角色的路径写在roles目录下的playbook中

[student@master roles]$ vim t1.yml
---
- name: haproxysrc: http://ansible.example.com/roles/haproxy.tar- name: myphpsrc: http://ansible.example.com/roles/myphp.tar

其中src指定角色的来源远程http://,本地用file://

2.使用ansible-galaxy安装角色

[student@master ansible]$ ansible-galaxy install -r roles/t1.yml -p roles/

3.查看roles下安装好的角色

[student@master ansible]$ cd roles/
[student@master roles]$ ls

在这里插入图片描述

通过ansible-galaxy list列出本地角色

在这里插入图片描述

可以使用ansible-galaxy remove子命令本地删除角色

在这里插入图片描述

http://www.xdnf.cn/news/19887.html

相关文章:

  • 具身智能多模态感知与场景理解:视觉探索
  • 如何本地编译servicecomb-java-chassis
  • Focal Loss
  • Elasticsearch 8 中 Nested 数据类型的使用方法
  • 【文献解读】ceRNA机制研究经典思路
  • Spring Boot项目中MySQL索引失效的常见场景与解决方案
  • 从群体偏好到解构对齐:大模型强化学习从GRPO到DAPO的“认知”进化
  • 【高并发内存池】四、中心缓存的设计
  • 疯狂星期四文案网第60天运营日记
  • GEO排名优化效益分析:为何AI搜索优化服务是当下性价比最高的流量投资?
  • 学习资料1(粗略版)
  • Web详解
  • WebSocket简述与网络知识回顾
  • Ubuntu镜像源配置
  • Kafka如何保证高可用
  • EasyExcel:阿里开源的高效 Excel 处理工具,轻松解决 POI 内存溢出问题
  • 【Unity知识分享】Unity实现全局监听键鼠调用
  • ZooKeeper核心ZAB选举核心逻辑(大白话版)
  • Anaconda3 2025软件下载及安装教程
  • LangGraph(一):入门从0到1(零基础)
  • 使用Qt Charts实现高效多系列数据可视化
  • RabbitMQ模型详解与常见问题
  • 大数据开发/工程核心目标
  • 文心iRAG - 百度推出的检索增强的文生图技术,支持生成超真实图片
  • “AI 正回应时,也可随时打断?”揭秘 GPT Realtime × Gemini 的“全双工魔力”,都离不开它!
  • Python快速入门专业版(一):Windows/macOS/Linux 系统环境搭建(附常见报错解决)
  • postgresql9.2.4 跨版本升级14.6
  • 25高教社杯数模国赛【B题超高质量思路+问题分析】
  • 渲染是否伤电脑?从根源减少损伤的技巧
  • 字符串(1)