【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.ymldependencies字段定义依赖角色,默认仅执行一次,可通过allow_duplicates: yes修改。

四、外部角色部署

1. 外部来源

  • 社区:Ansible Galaxygalaxy.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 时间同步。

相关推荐
Emily156853598702 小时前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧6 小时前
Java递归方法实现面包屑导航
java·开发语言
To_OC6 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
fīɡЙtīиɡ ℡7 小时前
AI 应用系统设计
java·开发语言·人工智能
城管不管7 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅7 小时前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
To_OC7 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript
AI绘画哇哒哒7 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
最强小杰8 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
风月说与山鬼8 小时前
三、大括号语法
前端·react.js