Ansible的工作原理

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

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 Automation Platform是一款基于Ansible构建的订阅产品,具有众多企业功能。它将十几个上游项目组合成一个集成的、精简的产品。每个产品组件还具有明确定义的范围的特定用途。例如,自动化控制器是Ansible自动化的WebUI和API,它基于上游项目AWX。该组件被绑定到平台中以管理自动化。Ansible Automation Platform可在本地运行,并按节点(而不是用户)收费,或者您可以使用Microsoft Azure上的托管服务.

本页将概述适用于社区Ansible和Red Hat Ansible Automation Platform的Ansible基础知识。有关更多详细信息,请访问http://docs.ansible.com/.

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

获取电子书
探索Ansible Automation Platform学习材料和工具

访问学习中心


高效架构

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

为了实现Linux和Windows的自动化,Ansible连接到受管节点并向其推出称为Ansible模块的小程序。这些程序被编写为系统所需状态的资源模型。然后Ansible执行这些模块(默认情况下通过SSH),并在完成时删除它们。这些模块设计为幂等元在可能的情况下,以便他们只在必要时对系统进行更改。

对于无法执行模块的自动化网络设备和其他IT设备,Ansible在控制节点上运行。由于Ansible是无代理的,因此它仍然可以与设备通信,而无需在受管节点上安装应用程序或服务。为了增加没有模块运行能力的设备的执行能力,Ansible Automation Platform可以使用一种称为自动化网格。要进一步了解网络自动化的工作原理,阅读电子书.

网络自动化本地和远程执行图

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

资格证书

对于Ansible to execute,它需要一个清单(我试图自动化哪些受管节点?)和凭据(我如何登录并连接到这些受管节点呢?)。

Community Ansible是分散的,这意味着它依赖于您现有的操作系统凭据来控制对远程计算机的访问。如果需要,Ansible可以轻松连接Kerberos、轻量级目录访问协议(LDAP)和其他集中式身份验证管理系统。您还可以将用户名和密码存储为Ansible的变量,并使用Ansible拱顶。这可以像将它们存储在库存文件中一样简单,如下所述。

Red Hat Ansible自动化平台can集中身份验证以及与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中可用且可配置.

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

[网络服务器]
www1.example.com网站
www2.example.com网站

[数据库服务器]
db0.example.com
db1.example.com

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

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

Ansible Playbooks:一种简单而强大的自动化语言

行动手册可以很好地协调您的IT基础架构的多个部分,并对一次要处理的机器数量进行非常详细的控制。这就是Ansible开始变得最有趣的地方。

Ansible的编配方法是一种经过精细调整的简单方法,因为我们认为您应该能够使用现有的知识,而不必记住特殊的语法或功能。

这是剧本的样子。作为提醒,这只是一个预告片-访问docs.ansible.com网站获取完整的文档,并查看所有可能的内容。

一个例子阿帕切.yml剧本可能如下所示:

---
- 名称: 已安装Apache服务器
  主机: 网状物
  成为: 真的
  任务:

  - 名称: 安装的最新Apache版本
    百胜:
      名称: httpd(httpd)
      状态: 最新的

  - 名称: Apache已启用并正在运行
    服务:
      名称: httpd(httpd)
      已启用: 真的
      状态: 起动

  - 名称: 复制index.html
    复制:
      型钢混凝土: web.html
      目的地: /var/www/html/index.html

Github源

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

  • 让机器进出负载平衡器和监视窗口。
  • 让一台服务器知道所有其他服务器的IP地址,使用收集到的关于这些特定服务器的事实,并使用这些事实动态构建配置文件。
  • 设置一些变量并提示其他变量,并设置未设置时的默认值。
  • 使用一个命令的结果来决定是否运行另一个命令。

有很多先进的可能性,但易于入门.

最重要的是,该语言保持可读性和透明性,而且您永远不必做诸如声明显式排序关系或用编程语言编写代码之类的事情。

Extend Ansible:插件、模块和API

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

你什么时候会使用Ansible自动化平台而不是社区Ansible?

Community Ansible是自动化的一个很好的起点。但Red Hat Ansible Automation Platform是根据企业自动机的需求构建的。它为以下方面提供了更多功能事件驱动自动化生成人工智能,添加了更多控件安全和报告工具,以及对生命周期技术支持的更大信心,这样您就可以以灵活、标准化的方式在整个组织中扩展自动化。

以下是Ansible Automation Platform对组织有意义的三个示例:

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

了解有关Ansible Automation Platform的更多信息。。。

特色集成

Ansible包含数百个模块,支持多种集成,包括: