我们希望听到您的声音!帮助我们了解 Ansible 生态系统的现状。
参加 2024 年 Ansible 项目调查

Ansible 的工作原理

Ansible 是一款开源的命令行 IT 自动化软件应用程序,用 Python 编写。它可以配置系统、部署软件并编排高级工作流,以支持应用程序部署、系统更新等。

Ansible 的主要优势在于简单易用。它还高度关注安全性与可靠性,特点是组件精简。它使用 OpenSSH 进行传输(还有其他传输方式和拉取模式可供选择),并使用人类可读的语言,旨在帮助用户快速上手,无需大量培训。

比较社区版 Ansible 与 Red Hat Ansible 自动化平台?了解差异

社区版 Ansible

社区版 Ansible 包含一套强大的命令行工具,支持安装了 Python 的大多数操作系统,包括 Red Hat Enterprise Linux、Debian、Ubuntu、MacOS、FreeBSD、Microsoft Windows 等。有关安装 Ansible 的更多信息,请参考安装文档

Red Hat Ansible 自动化平台

Red Hat Ansible 自动化平台是一款基于 Ansible 基础构建的订阅产品,具有众多企业级功能。它将十几个上游项目整合到一个集成、简化的产品中。每个产品组件都有特定的用途,并具有明确定义的范围。例如,自动化控制器是 Ansible 自动化的 WebUI 和 API,基于上游项目 AWX。该组件捆绑到平台中以管理自动化。Ansible 自动化平台可以部署在本地,并按节点(而非按用户)收费,或者您可以使用Microsoft Azure 上的托管服务产品

本页面将概述适用于社区版 Ansible 和 Red Hat Ansible 自动化平台的 Ansible 基础知识。有关更多详细信息,请访问https://docs.ansible.org.cn/

Red Hat Ansible 自动化平台:初学者指南

获取电子书
探索 Ansible 自动化平台学习材料和工具

访问学习中心


高效架构

社区版 Ansible 和 Ansible 自动化平台都基于控制节点和被管理节点的概念构建。Ansible 从控制节点执行,例如,用户运行 ansible-playbook 命令的位置。被管理节点是被自动化的设备,例如,Microsoft Windows 服务器。

对于自动化 Linux 和 Windows,Ansible 连接到被管理节点,并将小型程序(称为 Ansible 模块)推送到这些节点。这些程序被编写为系统所需状态的资源模型。然后,Ansible 执行这些模块(默认情况下通过 SSH),并在完成后删除它们。这些模块旨在尽可能幂等,以便它们仅在必要时对系统进行更改。

对于自动化网络设备和其他无法执行模块的 IT 设备,Ansible 在控制节点上运行。由于 Ansible 无代理,因此它仍然可以与设备通信,而无需在被管理节点上安装应用程序或服务。为了提高对无法运行模块的设备的执行能力,Ansible 自动化平台可以使用名为自动化网格的技术将自动化作业分散到执行节点。要了解有关网络自动化工作原理的更多信息,请阅读电子书

Network automation local and remote execution diagram

对于自动化公共云和 Web 服务,Ansible 还将在本地运行模块并直接与它们的 API 通信。有关更多信息,请阅读以下文档

凭据

为了执行 Ansible,它需要一个清单(我正在尝试自动化的被管理节点是什么?)和凭据(我如何登录并连接到这些被管理节点?)。

社区版 Ansible 是去中心化的,这意味着它依赖于您现有的操作系统凭据来控制对远程机器的访问。如果需要,Ansible 可以轻松地与 Kerberos、轻型目录访问协议 (LDAP) 和其他集中式身份验证管理系统连接。您也可以将用户名和密码作为变量存储在 Ansible 中,并使用Ansible Vault对其进行加密。这可以像将它们存储在清单文件中一样简单,如下文所述。

Red Hat Ansible 自动化平台可以集中式身份验证,还可以与行业标准工具(如 CyberArk AIM、Conjur、HashiCorp Vault 和 Microsoft Azure Key Vault)集成。自动化控制器使用 SHA256 哈希使用 PBKDF2 算法对本地自动化控制器用户密码进行哈希处理。通过外部帐户机制(LDAP、SAML、OAuth 等)进行身份验证的用户没有任何存储的密码或秘密。

阅读秘密处理和连接安全文档...

在简单的文本文件中管理您的清单

默认情况下,Ansible 使用非常简单的 INI 文件来表示它管理的机器,该文件将所有被管理机器放在您选择的组中。

要添加新机器,无需涉及任何额外的 SSL 签名服务器,因此,您永远不必费心去确定为什么由于不明确的 NTP 或 DNS 问题而导致特定机器未连接。

如果您的基础设施中存在另一个真相来源,Ansible 也可以插入其中,例如,从 Amazon Web Services、Google Compute Engine、Microsoft Azure、VMware vCenter 等来源获取清单、组和变量信息。社区版 Ansible 和 Ansible 自动化平台都可以使用各种动态清单插件。Ansible 自动化平台使这些插件易于在 WebUI 中获得并进行配置

以下是纯文本清单文件的外观

[webservers]
www1.example.com
www2.example.com

[dbservers]
db0.example.com
db1.example.com

列出清单主机后,可以在简单的文本文件中(在名为“group_vars/”或“host_vars/”的子目录中)或直接在清单文件中为它们分配变量。

或者,如前所述,您可以使用动态清单从 AWS 和 Azure 等数据源中提取清单。

Ansible Playbook:简单而强大的自动化语言

Playbook 可以精细地编排您的 IT 基础设施的多个部分,并对一次处理多少台机器进行非常详细的控制。这就是 Ansible 开始变得最有趣的地方。

Ansible 对编排的方法是精细调整的简单性,我们相信您应该能够使用现有知识,而无需记住特殊的语法或功能。

以下是 playbook 的外观。请记住,这只是一个简短介绍 - 请访问docs.ansible.com以获取完整文档,并了解所有可能的功能。

一个示例的 apache.yml playbook 可能如下所示

---
- name: Apache server installed
  hosts: web
  become: true
  tasks:

  - name: latest Apache version installed
    yum:
      name: httpd
      state: latest

  - name: Apache enabled and running
    service:
      name: httpd
      enabled: true
      state: started

  - name: copy index.html
    copy:
      src: web.html
      dest: /var/www/html/index.html

Github 源码

Ansible 文档对此进行了更深入的探讨。您可以做的事情还有很多,包括

  • 将机器添加进和移出负载均衡器和监控窗口。
  • 让一台服务器知道所有其他服务器的 IP 地址,使用收集到的有关这些特定服务器的信息,并使用这些信息动态构建配置文件。
  • 设置一些变量并提示输入其他变量,以及在未设置时设置默认值。
  • 使用一个命令的结果来决定是否运行另一个命令。

有很多高级可能性,但是入门很容易

最重要的是,语言仍然可读且透明,您永远不必做诸如声明显式排序关系或用编程语言编写代码之类的操作。

扩展 Ansible:插件、模块和 API

如果您想编写自己的模块,Ansible 模块可以使用任何可以返回 JSON 的语言编写(Ruby、Python、Powershell、bash 等)。您还可以通过编写与该数据源对话并返回 JSON 的程序,将清单插入任何数据源。还有一些用于扩展 Ansible 连接类型(SSH 不是唯一可能的传输方式)、回调(Ansible 如何记录等)甚至用于添加新的服务器端行为的 Python API。

您何时使用 Ansible 自动化平台而不是社区版 Ansible?

社区版 Ansible 是自动化的一个很好的起点。但 Red Hat Ansible 自动化平台是考虑到企业自动化人员的需求而构建的。它提供了更多用于事件驱动型自动化生成式 AI的功能,通过添加安全和报告工具以及生命周期技术支持提供更多控制,以及更高的信心 - 因此您可以在组织中以灵活、标准化的方式扩展自动化。

以下是一些示例,说明何时 Ansible 自动化平台可能对组织有意义

  • Ansible 自动化平台可以通过提供完全认证和签名的内容来帮助组织提高安全性并提供支持。您的组织可以了解哪些自动化内容是官方内容,数字签名的 Ansible 内容集合可确保从开发到生产的端到端软件供应链。
  • Ansible 自动化平台可以通过自动化网格自动化执行环境来帮助大规模地实现自动化操作。自动化网格允许企业在跨越多个站点的 IT 基础设施中为自动化添加弹性、自动化能力和安全性。
  • Ansible 自动化平台还可以帮助组织使用自动化分析来了解其自动化足迹。自动化分析帮助 IT 领导者和自动化架构师观察团队如何采用自动化并跟踪这些努力的成功。

了解更多关于 Ansible 自动化平台的信息...

精选集成

Ansible 包含数百个模块来支持各种集成,包括