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

相关推荐
wuminyu28 分钟前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
Flynn Liang1 小时前
大模型怎么自己调函数?Spring AI 2.0 Tool Calling 自动循环原理 + 完整时序图
java·人工智能·spring·agent·函数调用·springai·toolcalling
PedroQue991 小时前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
淡漠的蓝精灵2 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
乌暮2 小时前
请求进门先安检:Spring 拦截器与统一功能实战指南
java·开发语言·后端·学习·spring
学长毕设2 小时前
基于SpringBoot的烘焙商品商品系统-附源码
java·spring boot·后端
开开心心就好2 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
起个名字费劲死了2 小时前
Halcon学习一:骰子识别
前端·python·学习
大江东去浪淘尽千古风流人物2 小时前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速
其实防守也摸鱼2 小时前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php