type
status
date
slug
summary
tags
category
icon
password
书籍

Ansible 介绍

Ansible 是什么?

Ansible 是一个开源的 IT 自动化平台,主要用于配置管理、应用程序部署、和任务自动化。它的设计目标是帮助系统管理员和开发人员简化日常管理工作,通过减少手动操作的复杂性和错误率,使大规模的服务器和设备管理变得更加高效。
Ansible 使用无代理(agentless)架构,通过 SSH 或者 WinRM(Windows Remote Management)直接与受管节点进行通信,因此不需要在每个受管节点上安装额外的代理程序。
💡
灵机一动;为什么是无代理的,其实本质上接受Ansible帮你登陆到受管节点,帮你执行Python的库。完成机器层面的配置
notion image

Ansible 的主要特点:

  1. 简单直观:Ansible 使用 YAML 语法编写 playbooks(剧本),这使得配置文件易于阅读和编写。
  1. 无代理架构:无需在受管节点上安装代理,只需在控制节点上运行 Ansible。
  1. 模块化:Ansible 提供了大量的模块来执行各种任务,例如用户管理、软件安装、服务配置等。
  1. 可扩展性强:用户可以编写自定义模块,并将其集成到 Ansible 中。
  1. 支持多平台:不仅支持 Linux 系统,还支持 Windows 系统和网络设备。
  1. 幂等性:Ansible 确保每次执行时都达到预期状态,不会重复应用相同的变更,保证系统的一致性。例如,如果一个 playbook 指定安装某个软件,Ansible 会先检查是否已安装该软件,如果已安装,则跳过安装步骤。
Ansible 被广泛应用于 DevOps 场景中的自动化运维、持续集成和持续交付(CI/CD)等任务中。
 
Ansible本身没有批量部署的能力,是由所运行的模块实现批量部署,Ansible只是提供一种框架
notion image
  • Ansible:核心:
  • Core Modules:核心模块,都是ansible自带的模块
  • Custom Modules:扩展模块,若核心模块不足以完成某种功能,可以添加扩展模块
  • Plugins:插件,完成模块功能的补充
  • Playbooks:剧本,Ansible的任务配置文件,将多个任务定义在剧本中,由Ansible自动执行
  • Connectior Plugins:连接插件,Ansible基于连接插件连接到各个主机上,虽然Ansible是使用
  • ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
  • Host Inventory:主机群,定义ansible管理的主机

常见疑问:Ansible 和 Kubernetes 的区别

Ansible 和 Kubernetes 的确有一些共同点,例如它们都涉及到自动化和任务管理。然而,它们的设计目标和应用场景却大不相同。
  • Ansible:专注于配置管理和任务自动化,是一种通用的 IT 自动化工具。它适合用于对服务器和 IT 基础设施进行整体管理。
  • Kubernetes:专注于容器编排,管理容器化的应用程序。它确保容器的高可用性、自动扩展以及资源的优化利用。
因此,Ansible 更适合管理服务器的操作系统层面配置,而 Kubernetes 则用于管理在服务器上运行的容器化应用程序。两者可以配合使用:通过 Ansible 管理服务器配置,然后用 Kubernetes 管理容器化的应用程序,达到更高效的系统管理效果。

为什么使用 Ansible?

自动化与 Linux 系统管理:手动管理系统的方式容易出错,尤其在多个服务器存在配置差异的情况下,维护复杂度较高。自动化能够实现快速、精确的部署和配置,减少重复性工作并提升效率。
基础架构即代码:Ansible 让“基础架构即代码”得以实现。管理员可以使用机器可读的语言定义所需的系统配置,通过版本控制管理变更,确保环境一致性并且能够轻松回滚。
减少人为错误:自动化减少了手动操作的需求,从而降低了人为错误的风险。通过代码审查和文档记录,确保系统保持预期的状态。

Ansible 的版本介绍

Ansible Core

  • Ansible Core 是 Ansible 的基础组件,包含了核心功能模块。
  • 可通过 Python 的 pip 包管理工具来安装 Ansible Core。

红帽企业 Linux 中的 Ansible Core

  • 在红帽企业 Linux 9 中,Ansible Core 以 RPM 包的形式提供。
  • 它支持执行 Ansible Playbook,并能与其他工具(如 OpenSCAP)集成。

红帽 Ansible 自动化平台

红帽 Ansible 自动化平台扩展了 Ansible Core,包含了更多的工具和资源,帮助企业更好地管理自动化任务:
  • Ansible Core:核心功能模块。
  • Ansible 内容集合:包含大量内置模块(如 ansible.builtin)和社区共享模块。用户可以通过 Ansible Galaxy 下载和分享内容集合,目前该平台上有超过 120 个集合。
  • Ansible Navigator:一种用于运行和管理 Ansible 任务脚本的工具。它包含了常用的 Ansible 命令,如 ansible-playbook(执行任务脚本)、ansible-inventory(管理主机列表)和 ansible-config(配置 Ansible 设置)。Ansible Navigator 支持在容器中运行任务,确保任务环境隔离并便于维护。
  • 完整的自动化执行环境

自动化执行环境

自动化执行环境是一个容器化环境,包含了 Ansible CoreAnsible 内容集运行 Playbook 所需的 Python 库。Ansible Tower 可以调用这些执行环境来执行 playbook。
  • Ansible Tower:企业级的自动化控制器,提供了 Web 界面和 REST API 用于管理和监控自动化任务。它就像一个集中指挥中心,可以管理所有的自动化流程。
  • 用户可以通过 Red Hat 的控制台(如 console.redhat.com)访问 Ansible Galaxy 和 Ansible Navigator 等资源。Ansible Galaxy 则是一个开放的社区资源库,适合个人用户和开发者获取和分享各种 Ansible 资源。
  • 自动化中心(Automation Hub):Red Hat 提供的资源库,用户可以在此找到各种 Ansible 内容和模块,方便导入并用于项目中。 主要面向企业用户,提供经过认证和支持的内容集合,适合在生产环境中使用。
 
 
notion image

Ansible 的自动化工作流程

Ansible 的自动化流程可以简单地分为以下几个步骤:
  1. 安装 Ansible Navigator:首先,通过命令行使用 sudo dnf install ansible-navigator 安装 Ansible Navigator,这是用于管理和执行 Ansible 任务的重要工具。
  1. 下载执行环境的容器镜像:使用容器技术(如 Podman)下载与 Ansible Navigator 配合使用的执行环境容器镜像。您可以通过以下命令进行下载:
    1. 这一步确保您有一个包含所需工具和依赖的环境来运行自动化任务。
  1. 创建执行环境:通过 Ansible Builder 创建一个执行环境,确保它包含运行自动化任务所需的所有工具和依赖项。
  1. 开发和运行任务:使用 Ansible Navigator 编写和执行自动化任务的 playbook。该工具利用已创建的执行环境来执行任务,从而确保环境的一致性和稳定性。
  1. 执行环境的优点:执行环境可以方便地随时使用,适用于多种任务场景,且具备灵活扩展的能力,能够满足不同的自动化需求。
通过这些步骤,用户能够高效地管理和执行大规模的自动化任务,确保 IT 基础设施的一致性、可扩展性和可靠性。

实操

安装和使用 Ansible Navigator

步骤 1:安装 Ansible Navigator

在控制节点上,使用以下命令安装 Ansible Navigator:

步骤 2:验证 Ansible Navigator 是否安装成功

安装完成后,验证系统上是否已成功安装 Ansible Navigator,使用以下命令查看版本:
输出示例:

步骤 3:登录到容器镜像仓库

使用 Podman 登录到 Red Hat 的容器镜像仓库:
在提示下输入您的注册用户名和密码:
登录成功后,您将看到类似“Login Succeeded”的消息。

步骤 4:下载执行环境的容器镜像

下载您准备与 Ansible Navigator 一起使用的执行环境容器镜像。使用以下命令下载:

用户的疑问与回答整理

  • Ansible Navigator 需要在容器环境执行吗?
当您在宿主机上运行 ansible-navigator 来执行任务时,会生成一个容器来提供执行环境。这里是执行过程的简要说明:
  1. 调用容器ansible-navigator 会使用 podmandocker 等容器工具来启动一个容器,这个容器基于指定的执行环境镜像(比如 ee-supported-rhel8:latest)。
  1. 任务执行:这个容器包含 ansible-core 以及相关依赖项,用于运行您的 Ansible Playbooks。所有任务都在这个临时生成的容器内执行,确保环境一致且依赖项完整。
  1. 容器的生命周期:任务完成后,容器会被销毁。也就是说,每次执行任务时都会生成一个新的容器,用于隔离环境,确保任务不会影响宿主机或其他任务。
这种方法的优点是能够在隔离的环境中运行任务,同时减少对宿主机环境的依赖。

步骤 5:验证镜像是否已下载

您可以使用以下命令显示本地可用容器镜像的列表,以验证镜像是否已成功下载:
输出示例:
 

准备受管主机

Linux 或 UNIX 系统

要准备受管主机以与 Ansible 控制节点配合使用,需要确保以下要求:
  1. 操作系统:受管主机应运行支持的 Linux 或 UNIX 系统。
  1. Python 版本:需要安装 Python 3.8 或相应的版本,例如 Linux 8 的 platform-python
  1. SELinux:确保受管主机安装了 python3-libselinux,以支持与复制、文件或模板相关的模块。
  1. 软件包管理:可以使用 Ansible 的 ansible.builtin.dnfansible.builtin.package 模块来管理软件包。
  1. SSH 和 sudo:Ansible 使用 SSH 进行连接,并通过 sudo 获取超级用户权限,以便执行需要高权限的操作。
满足以上条件后,受管主机将能够有效地与 Ansible 控制节点交互,从而确保系统处于预期状态。

Microsoft Windows 受管主机的要求

  • 操作系统:受管主机需要运行 Microsoft Windows,并支持 Ansible。
  • PowerShell:必须安装 Microsoft Windows PowerShell 3.0 或更高版本。
  • Python:需要安装 Python,以支持 Ansible 模块的运行。
  • .NET Framework:需要安装 .NET Framework 4.0,以便 Ansible 正常工作。

网络设备受管主机

  • 支持的设备:Ansible 可以管理多种网络设备,包括 Cisco IOS、IOS XR、NX-OS、Juniper Junos、Arista EOS 以及其他基于网络操作系统的设备。
  • 连接方式:通常使用 SSH 或 HTTP(S) API 进行特殊连接,以便与网络设备通信。

额外资源

有关 Microsoft Windows 和网络设备管理的更多信息,可以访问以下链接:
  • Ansible Network Automation Documentation

练习:

安装Ansible

 
相关文章
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
02:实施Playbook-1 主机清单自我调整链表
Loading...
みなみ
みなみ
一个普通的干饭人🍚
最新发布
TOKYO自習島
2025-5-12
営業保証金-21問
2025-5-6
平成26年秋期 午後問1
2025-5-6
令和5年秋期 午後問1
2025-5-3
令和2年秋期 午後問1
2025-5-2
第1回:オリエンテーション/意思決定と会計情報
2025-4-30
公告

🎉 欢迎访问我的博客 🎉

🙏 感谢您的支持 🙏

📅 本站自 2024年9月1日 建立,致力于分享在 IT・MBA・不动产中介 等领域的学习与实践,并推动 学习会 的自主开展。
📖 博客语言使用比例
🇯🇵 日语 90% 🇨🇳 中文 8% 🇬🇧 英语 2%

📚 主要内容

💻 IT・系统与开发

  • 系统管理:Red Hat 等
  • 容器与编排:Kubernetes、OpenShift
  • 云计算:AWS、IBM Cloud
  • AI 入门:人工智能基础与实践
  • 技术笔记与考证经验

🏠 不动产 × 宅建士

  • 宅建士考试笔记

🎓 MBA 学习笔记

  • 管理学、经济学、财务分析等

🔍 快速查找内容(标签分类)

由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
📌 定期更新,欢迎常来看看!
📬 有任何建议或想法,也欢迎留言交流!