【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 时间同步。

相关推荐
醇氧8 分钟前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
qetfw2 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具
甲维斯2 小时前
我要开始吹牛逼了!Kimi K3 “宇宙无敌”!
前端·人工智能
a1117762 小时前
微光小屋-前端养成小游戏 开源项目
前端
kyriewen2 小时前
我让AI给前端项目做了一次完整的Code Review——它和人类的差距,比我想的大得多
前端·javascript·ai编程
张鑫旭2 小时前
快速过下我2026年上半年的前端学了些啥
前端
维天说2 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
এ慕ོ冬℘゜2 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript