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

相关推荐
风骏时光牛马5 分钟前
AI提示词工程:高效构建精准指令的方法论
前端
葡萄城技术团队14 分钟前
一个好的 BI Dashboard 到底应该怎么设计?
前端
估值探索者21 分钟前
【AI+量化实战 #05】财报季的信息洪流:用LLM给业绩预告分类+算事件窗口收益
java·c语言·c++·人工智能·python·分类·数据挖掘
热爱编程的小李1 小时前
基于若以开发的新版情怀麻将后台
java
晴天162 小时前
前端 postMessage 使用场景
前端·javascript·网络
zhanghaha13143 小时前
HTML系列教程:15_标签 全称 + 简写 超详细讲解(新手专用)
前端·html
zhanghaha13143 小时前
HTML系列教程:14_HTML 表单与输入框 <form>、<input> 零基础详解
java·前端·javascript
IMPYLH3 小时前
HTML 的 <samp> 元素
前端·网络·html
IMPYLH3 小时前
HTML 的 <script> 元素
前端·html
weixin_493503678 小时前
Vue3 前端生成 PDF:会员证书与活动签到表的三种打印方案与踩坑记录
前端·pdf·状态模式