type
status
date
slug
summary
tags
category
icon
password
深入浅出 Ansible 内容集指南
你的理解非常接近了!为了更清晰明了,我来详细解答一下:
- 调用模块来完成自动化任务(builtin)
如果你只有一个简单任务(例如安装一个软件包),那么可以直接使用 Ansible 提供的**模块(如 builtin 模块)**来执行。比如,
yum
模块安装一个包,user
模块添加用户等。- 任务很多时使用 roles 来组织和执行
当任务变多或复杂时,使用**角色(roles)**会更方便。Roles 帮助你将多个任务和配置文件组织在一起,使得代码更整洁、可复用。例如,可以将 Web 服务器的安装、配置、启动等操作放到一个
web_server
角色中。- 下载内容集来获得更多资源
如果某些特定任务需要的模块或角色不在基础 Ansible 中,可以从 Ansible Galaxy 下载内容集合(Collection)。内容集合包含多个模块和角色,为特定领域或厂商(例如 AWS、Red Hat 等)提供支持。这种方式扩展了 Ansible 的功能,避免从零编写。
- 分配不同任务给不同的人或团队时,使用内容集中的角色或不同剧本
如果任务比较庞大且需要多个团队合作,可以将任务划分为不同的角色(roles)或剧本(playbook)。可以让每个团队负责自己领域的角色,或者通过内容集中的角色来分工协作。这样一来,任务在多个团队之间分配时也会更加结构化,不会混淆各自的责任。
1. Ansible 简介
Ansible 是一个开源的自动化工具,专门用于配置管理、应用部署和任务自动化。它帮助管理员自动执行日常重复的操作任务,节省时间并降低人为错误的可能性。
Ansible 的几个重要概念
- 主机(Host):指被管理的计算机或服务器。
- 剧本(Playbook):用 YAML 格式编写的文件,定义了要在主机上执行的任务集合。
- 模块(Module):具体的任务单元,用于执行单一操作,如安装软件、复制文件等。
2. 什么是内容集(Collection)?
内容集(Collection) 是 Ansible 用来组织和管理模块、角色等资源的方式。内容集可以看作是一个“资源包”,其中包含模块、插件、角色等,通过打包分发的形式让用户更方便地找到、安装、并使用所需的自动化资源。
内容集的组成部分
内容集包含以下资源:
- 模块:执行特定任务的代码块,例如创建用户、安装软件等。
- 角色(Roles):一组任务和配置文件的集合,帮助组织复杂的自动化流程。
- 插件(Plugins):扩展 Ansible 的功能,例如用来处理不同格式的库存文件、生成日志等。
3. 内容集的命名方式
内容集的名称由命名空间和内容集名称组成,格式为
<namespace>.<collection_name>
,例如:community.crypto
:由社区开发的加密相关内容集。
ansible.builtin
:Ansible 自带的模块集合,提供一些基础模块和功能。
4. 使用内容集的方式
在 Ansible 中,您可以使用模块、角色和集合中的模块/角色来完成自动化任务,以下是它们的具体使用场景和方法:
- 模块:单步执行特定任务,适合简单操作,如安装包、配置用户。
- 角色:整合多个任务和配置,适合复杂场景,如自动化应用程序部署。
- 集合中的角色与模块:使用规范的名称空间组织,如
community.general
(由社区提供的一般模块和角色)或redhat.rhel_system_roles
(Red Hat 提供的特定于 RHEL 的角色)。
4.1 角色(Roles)
- 作用:角色是一组有组织的资源集合,通常包括任务、变量、模板、文件等,常用于重复性任务或复杂的自动化操作。
- 使用方法:通过
roles
指令调用。
示例:
4.2 模块(Modules)
- 作用:模块是 Ansible 的基本执行单元,负责实现单个操作或任务。
- 使用方法:直接在
tasks
下调用模块。
示例:
4.3 集合中的模块和角色(Collections)
- 作用:集合中的模块和角色可以帮助标准化和模块化组织资源,尤其适合跨项目使用。
- 使用方法:通过
<namespace>.<collection_name>.<module/role>
格式调用。
示例:
5. 如何选择和安装内容集?
Ansible 提供了多种获取和安装内容集的方式,包括Ansible Galaxy、自动化中心、从文件安装、或使用
requirements.yml
文件批量安装。5.1 从 Ansible Galaxy 安装
Ansible Galaxy 是一个社区平台,您可以通过以下命令安装内容集:
5.2 使用自动化中心(Automation Hub)
自动化中心由 Red Hat 提供,是一个用于托管内容集的商业平台,提供经过验证的内容集。
5.3 从文件或 Git 仓库安装
如果您从文件或 Git 仓库下载了内容集,可以使用以下命令安装:
5.4 使用 requirements.yml
批量安装内容集
requirements.yml
文件可以帮助一次安装多个内容集,文件示例如下:使用以下命令根据要求文件安装内容集:
6. 如何配置内容集
内容集可以通过
ansible.cfg
配置文件来设置来源(例如 Galaxy 或自动化中心)。示例如下:7. 使用内容集的实际示例
让我们通过几个具体的例子来了解如何使用内容集:
示例 1:使用 community.mysql
创建 MySQL 用户
假设您想在 MySQL 中创建一个名为
operator1
的用户,可以使用 community.mysql
内容集。运行命令:
示例 2:使用 redhat.satellite
添加组织到 Red Hat Satellite
假如需要在 Red Hat Satellite 中添加组织,可以使用
redhat.satellite
内容集的 organizations
角色。运行命令:
8. 总结
通过内容集,Ansible 为用户提供了模块化、标准化的资源管理方式,提升了开发和使用自动化任务的效率。内容集不仅使您可以轻松找到和安装所需模块和角色,还支持通过 Ansible Galaxy 和自动化中心获取支持内容,从而进一步丰富 Ansible 的功能。
练习:
实验手册:Ansible 集合与角色的安装与使用
实验环境准备
- 启动实验环境
- 进入实验目录
1. 安装 gls.utils
集合
- 使用
ansible-galaxy
安装gls.utils
集合 - 备注:使用
ansible-galaxy
命令指定gls-utils-0.0.1.tar.gz
文件安装集合到collections
目录。 - 作用:
gls.utils
包含两个角色backup
和restore
,用于文件和目录的备份和恢复操作。
- 验证安装是否成功
- 备注:通过
ansible-navigator
检查集合的安装情况,确保gls.utils
版本 0.0.1 出现在列表中。
2. 使用 gls.utils
集合中的 backup
角色
- 创建
bck.yml
playbook - 备注:
bck.yml
playbook 使用gls.utils.newping
模块测试主机连接,之后调用gls.utils.backup
角色备份系统配置文件。 - 作用:备份
/etc/sysconfig
和/etc/yum.repos.d
目录中的配置文件,以便后续恢复。
- 运行 Playbook
- 备注:执行
bck.yml
playbook,确保备份文件操作成功完成。
3. 安装其他集合
- 创建
requirements.yml
文件 - 备注:
requirements.yml
文件定义了需要安装的三个集合路径。 - 作用:
redhat.insights
:包含insights_client
角色,安装和配置 Red Hat Insights 客户端。redhat.rhel_system_roles
:包含多个角色(如selinux
),用于配置 RHEL 系统。community.general
:提供各种常用模块。
- 安装集合
- 备注:通过
ansible-galaxy
使用requirements.yml
一次性安装多个集合到collections
目录。
- 验证集合安装
- 备注:使用
ansible-galaxy collection list
命令查看安装的集合列表,确保redhat.insights
、redhat.rhel_system_roles
和community.general
安装成功。
4. 使用 redhat.insights
和 redhat.rhel_system_roles
集合
- 创建
new_system.yml
playbook - 备注:
new_system.yml
playbook 使用insights_client
角色配置 Red Hat Insights 客户端,并使用selinux
角色将 SELinux 模式设置为强制。 - 作用:
insights_client
:安装并配置 Red Hat Insights 客户端,以实现系统监控和报告。selinux
:配置 SELinux 为强制模式,提升系统安全性。
- 运行 Playbook
- 备注:执行
new_system.yml
playbook,完成 Insights 客户端安装与 SELinux 配置。
通过本实验,您可以熟悉如何安装和使用多个 Ansible 集合,并通过 Playbook 实现自动化管理和配置。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/12dd7ae8-88e2-8004-a92d-e4beaa8a77b0
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章