【RH294知识点汇总】第 7 章 《 使用角色和 Ansible 内容集合简化 Playbook 》

目录

一、目标

[二、Ansible 角色结构与使用](#二、Ansible 角色结构与使用)

[1. 角色核心作用](#1. 角色核心作用)

[2. 角色标准目录结构](#2. 角色标准目录结构)

[3. 角色变量规则](#3. 角色变量规则)

[4. 角色调用方式](#4. 角色调用方式)

[三、Ansible 角色创建](#三、Ansible 角色创建)

[1. 标准创建流程](#1. 标准创建流程)

[2. 角色依赖管理](#2. 角色依赖管理)

四、外部角色部署

[1. 外部来源](#1. 外部来源)

[2. ansible-galaxy 核心命令](#2. ansible-galaxy 核心命令)

[3. 批量安装](#3. 批量安装)

[五、Ansible 内容集合](#五、Ansible 内容集合)

[1. 核心价值](#1. 核心价值)

[2. 安装与配置](#2. 安装与配置)

[3. 使用规范](#3. 使用规范)

[六、RHEL 系统角色](#六、RHEL 系统角色)

[1. 核心优势](#1. 核心优势)

[2. 获取方式](#2. 获取方式)

[3. 典型示例](#3. 典型示例)


一、目标

熟练使用Ansible 角色 和Ansible 内容集合 快速开发 Playbook,实现代码复用;掌握角色创建、外部角色获取、内容集合使用,以及RHEL 系统角色的标准化配置。

二、Ansible 角色结构与使用

1. 角色核心作用

  • 将复杂 Playbook 拆分为独立模块,支持复用、共享、并行开发。

  • 自动加载任务、处理程序、变量、文件、模板,简化脚本编写。

2. 角色标准目录结构

角色以目录为单位,核心子目录及功能如下:

子目录 核心功能 关键文件
defaults 角色默认变量,最低优先级 main.yml
files 静态文件,任务直接引用 自定义文件
handlers 处理程序(handler)定义 main.yml
meta 角色元信息、依赖关系 main.yml
tasks 角色核心任务定义 main.yml
templates Jinja2 模板文件 自定义.j2 文件
tests 角色测试用清单与 Playbook test.yml
vars 角色内部变量,最高优先级 main.yml

3. 角色变量规则

  • vars/main.yml:内部专用变量,优先级高,禁止外部修改。

  • defaults/main.yml:默认变量,优先级低,支持用户自定义覆盖。

  • 优先级顺序:清单变量 > Play 变量 > 角色调用传参 > defaults 变量 > vars 变量。

4. 角色调用方式

  1. 静态导入 :ansible.builtin.import_role,解析阶段加载,变量 /handler 全局生效。

  2. 动态包含 :ansible.builtin.include_role,运行时加载,变量仅作用于当前任务。

  3. roles 列表 :Play 中直接声明,优先于 tasks 执行,支持传参。

  4. 特殊执行段:pre_tasks(角色前运行)、post_tasks(角色后运行)。

三、Ansible 角色创建

1. 标准创建流程

  1. 初始化框架:ansible-galaxy init 角色名,自动生成完整目录结构。

  2. 编写内容:tasks/main.yml写核心逻辑,templates放模板,defaults设默认值。

  3. Playbook 调用:通过roles字段或import_role/include_role引入。

2. 角色依赖管理

在meta/main.yml的dependencies字段定义依赖角色,默认仅执行一次,可通过allow_duplicates: yes修改。

四、外部角色部署

1. 外部来源

  • 社区:Ansible Galaxy (galaxy.ansible.com)。

  • 企业:红帽自动化中心、私有 Git 仓库。

2. ansible-galaxy 核心命令

  • 初始化:ansible-galaxy init

  • 搜索角色:ansible-galaxy search

  • 安装角色:ansible-galaxy install

  • 查看已装:ansible-galaxy list

  • 删除角色:ansible-galaxy remove

3. 批量安装

通过roles/requirements.yml定义角色来源,执行ansible-galaxy install -r requirements.yml批量部署。

五、Ansible 内容集合

1. 核心价值

将模块、角色、插件 打包分发,独立于 Ansible Core 更新,通过命名空间(redhat/community)避免冲突。

2. 安装与配置

  • 安装命令:ansible-galaxy collection install 集合名 -p 目标目录

  • 批量安装:collections/requirements.yml定义依赖

  • 来源配置:ansible.cfg的[galaxy]段指定服务器(自动化中心 / Galaxy)

3. 使用规范

调用资源需使用全限定名(FQCN) ,如community.mysql.mysql_user。

六、RHEL 系统角色

1. 核心优势

红帽官方支持,兼容多版本 RHEL,统一配置时间、网络、防火墙等系统组件。

2. 获取方式

  • RPM 包安装:dnf install rhel-system-roles

  • 内容集合:redhat.rhel_system_roles

3. 典型示例

redhat.rhel_system_roles.timesync角色,统一配置 RHEL 6/7/8/9 时间同步。

相关推荐
wangbing112519 分钟前
springboot应用关闭时触发动作
java·spring boot·后端
weixin_460443563 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
子兮曰4 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
海鸥-w6 小时前
什么是AOP
java
Cc.Y7 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck7 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787057 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev7 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
Sarvartha7 小时前
Lambda 表达式和函数式接口
java·开发语言
IMPYLH7 小时前
HTML 的 <video> 元素
前端·html