type
status
date
slug
summary
tags
category
icon
password

深入浅出 Ansible 内容集指南

 
💡
你的理解非常接近了!为了更清晰明了,我来详细解答一下:
  1. 调用模块来完成自动化任务(builtin)
    1. 如果你只有一个简单任务(例如安装一个软件包),那么可以直接使用 Ansible 提供的**模块(如 builtin 模块)**来执行。比如,yum 模块安装一个包,user 模块添加用户等。
  1. 任务很多时使用 roles 来组织和执行
    1. 当任务变多或复杂时,使用**角色(roles)**会更方便。Roles 帮助你将多个任务和配置文件组织在一起,使得代码更整洁、可复用。例如,可以将 Web 服务器的安装、配置、启动等操作放到一个 web_server 角色中。
  1. 下载内容集来获得更多资源
    1. 如果某些特定任务需要的模块或角色不在基础 Ansible 中,可以从 Ansible Galaxy 下载内容集合(Collection)。内容集合包含多个模块和角色,为特定领域或厂商(例如 AWS、Red Hat 等)提供支持。这种方式扩展了 Ansible 的功能,避免从零编写。
  1. 分配不同任务给不同的人或团队时,使用内容集中的角色或不同剧本
    1. 如果任务比较庞大且需要多个团队合作,可以将任务划分为不同的角色(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. 启动实验环境
    1. 进入实验目录

      1. 安装 gls.utils 集合

      1. 使用 ansible-galaxy 安装 gls.utils 集合
          • 备注:使用 ansible-galaxy 命令指定 gls-utils-0.0.1.tar.gz 文件安装集合到 collections 目录。
          • 作用gls.utils 包含两个角色 backuprestore,用于文件和目录的备份和恢复操作。
      1. 验证安装是否成功
          • 备注:通过 ansible-navigator 检查集合的安装情况,确保 gls.utils 版本 0.0.1 出现在列表中。

      2. 使用 gls.utils 集合中的 backup 角色

      1. 创建 bck.yml playbook
          • 备注:bck.yml playbook 使用 gls.utils.newping 模块测试主机连接,之后调用 gls.utils.backup 角色备份系统配置文件。
          • 作用:备份 /etc/sysconfig/etc/yum.repos.d 目录中的配置文件,以便后续恢复。
      1. 运行 Playbook
          • 备注:执行 bck.yml playbook,确保备份文件操作成功完成。

      3. 安装其他集合

      1. 创建 requirements.yml 文件
          • 备注:requirements.yml 文件定义了需要安装的三个集合路径。
          • 作用
            • redhat.insights:包含 insights_client 角色,安装和配置 Red Hat Insights 客户端。
            • redhat.rhel_system_roles:包含多个角色(如 selinux),用于配置 RHEL 系统。
            • community.general:提供各种常用模块。
      1. 安装集合
          • 备注:通过 ansible-galaxy 使用 requirements.yml 一次性安装多个集合到 collections 目录。
      1. 验证集合安装
          • 备注:使用 ansible-galaxy collection list 命令查看安装的集合列表,确保 redhat.insightsredhat.rhel_system_rolescommunity.general 安装成功。

      4. 使用 redhat.insightsredhat.rhel_system_roles 集合

      1. 创建 new_system.yml playbook
          • 备注:new_system.yml playbook 使用 insights_client 角色配置 Red Hat Insights 客户端,并使用 selinux 角色将 SELinux 模式设置为强制。
          • 作用
            • insights_client:安装并配置 Red Hat Insights 客户端,以实现系统监控和报告。
            • selinux:配置 SELinux 为强制模式,提升系统安全性。
      1. 运行 Playbook
          • 备注:执行 new_system.yml playbook,完成 Insights 客户端安装与 SELinux 配置。

      通过本实验,您可以熟悉如何安装和使用多个 Ansible 集合,并通过 Playbook 实现自动化管理和配置。
       
      相关文章
      RHCE 9版本考试资料
      Lazy loaded image
      40.总复习-4 实验手册:galaxy角色配置与部署
      Lazy loaded image
      39.总复习-3 实验手册:配置 RHEL 系统角色和用户管理
      Lazy loaded image
      38.总复习-2 实验手册:Ansible Web 服务器配置和测试
      Lazy loaded image
      37.总复习-1 实验手册:配置和运行Ansible脚本
      Lazy loaded image
      36:总复习
      Lazy loaded image
      25:使用角色和Ansible内容合集简化Playbook-5 通过系统角色重用内容23:使用角色和Ansible内容合集简化Playbook-3 从外部内容源部署角色
      Loading...
      みなみ
      みなみ
      一个普通的干饭人🍚
      最新发布
      02-生成AIパスポート試験対策:第2章「生成AI」
      2025-2-1
      01-生成AIパスポート試験対策:第1章「人口知能」
      2025-2-1
      究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
      2025-1-27
      不要再傻傻的直接买NISA啦
      2025-1-27
      Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
      2025-1-24
      529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
      2025-1-22
      公告
      🎉欢迎访问我的博客🎉
      - 感谢您的支持 --
      本站点于2024/09/01建立
      👏主要分享IT相关主题👏
      系统管理:
      Redhat…
      容器和编排:
      Kubernetes、Openshift…
      云计算:
      AWS、IBM…
      AI入门
      以及技术笔记和考证经验
      定期更新,欢迎互动。
      感谢访问!
      快速浏览相关标签