什么是 Ansible - 使用 Ansible 进行配置管理

2021-04-02  本文已影响0人  码者无疆

【注】本文译自:https://www.edureka.co/blog/what-is-ansible/
  Ansible 是一个开源的 IT 配置管理、部署和编排工具。它旨在为各种自动化挑战提供巨大的生产率收益。该工具使用非常简单,但功能强大,可以自动化复杂的多层 IT 应用程序环境。
  通过本文,您将学习:

为什么我们需要 Ansible ?

  在知道什么是 Ansible 之前,有很必要了解 Ansible 出现之前所面临的问题。
  让我们稍微回顾一下:在网络计算的开始、可靠而高效地部署和管理服务器成为一项挑战之时。在那个时候,系统管理员手动管理服务器,在单个服务器上安装软件,更改配置以及管理服务。
  随着数据中心的发展以及托管应用程序的日益复杂,管理员意识到他们无法满足启用的应用程序那样快速地扩展其手动系统管理。由于开发团队是敏捷的,并且经常发布软件,但是 IT 运营花费很多时间来配置系统,从而阻碍了开发人员的工作速度。这就促进了服务器配置和配置管理工具的蓬勃发展。
  考虑一下管理服务器队列的繁琐例程。我们始终需要不断更新,推送更改,在其上复制文件等。这些任务使事情变得非常复杂且耗时。
  但是,让我告诉您,上述问题有解决方案。那就是 – Ansible
  在全面介绍 Ansible 之前, 首先让我们熟悉一些 Ansible 术语:
Ansible 术语:

使用 Ansible 的优点

<img src="https://p1-tt.byteimg.com/origin/pgc-image/2cc5fac68c6843fc81993452db3abe2f" width="30"/>简单:Ansible 使用 YAML 格式的简单语法,称为剧本。 YAML是一种人类可读的数据序列化语言。 这非常简单。 因此,不需要任何特殊的编码技能,甚至您的 IT 组织中不了解 Ansible 的人都可以阅读剧本并了解正在发生的事情。 Ansible 总是按顺序执行任务。 安装也很简单。 总之,简单性确保您可以快速入门。
<img src="https://p3-tt.byteimg.com/origin/pgc-image/a79aee9410e94547a0fa81c334707211" width="30"/>无代理:最后,Ansible是完全无代理的。 您无需在要自动执行的客户端系统或主机上安装任何代理/软件或其他防火墙端口。 您不必单独设置管理基础结构,包括管理整个系统,网络和存储。 Ansible 进一步减少了团队立即开始自动化的工作量。
<img src="https://p6-tt.byteimg.com/origin/pgc-image/0cb7fd0d0ed6405294e87dfef0edbd0f" width="30"/>强大而灵活:Ansible 具有强大的功能,可以使您对最复杂的 IT 工作流程进行建模。 在这方面,Ansible 的内置电池方法(这种理念意味着自给自足的、开箱即用,具备所需的一切),可以管理您所需要的基础设施、网络、操作系统和服务已被使用,因为 Ansible 为您提供了数百个模块来对其进行管理。 Ansible 的功能使您可以编排整个应用环境,而不管它被部署在何处。
<img src="https://p6-tt.byteimg.com/origin/pgc-image/e3af60778fce4baaa68bb3dba2c04906" width="30"/>高效:服务器上没有额外的软件,意味着更多的应用程序资源。 另外,由于 Ansible 模块通过 JSON 进行工作,因此 Ansible 可以通过使用你熟悉的编程语言编写模块进行扩展。 Ansible 引入了模块作为软件的基本构建块。 因此,您甚至可以根据需要自定义它。 例如如果您已有一个以纯文本格式发送消息的消息发送模块,并且您也想发送图像,也可以添加图像发送功能。

Ansible 能做什么?

  Ansible 通常与其他配置管理工具(如Puppet,Chef,SaltStack等)一起分组。嗯,让我告诉您,Ansible 不仅限于配置管理。它也可以以许多不同的方式使用。 下面我会提到一些:
<img src="https://p6-tt.byteimg.com/origin/pgc-image/2e60674450bc4fbc8467c3f3db39e4f2" width="30"/>设置:您的应用程序必须位于某个地方。 如果您是 PXE(预引导执行环境)引导并启动裸机服务器或虚拟机,或者从模板创建虚拟或云实例,则 Ansible&Ansible Tower 可帮助简化此过程。 例如,如果我要测试使用 Visual C ++ 构建的应用程序的调试版本,则应该满足一些先决条件,例如拥有 Visual C ++ 库 DLL(msvcr100d.dll)。我还将需要在您的计算机中安装 Visual Studio。 这时 Ansible 会确保所需的软件已下载并安装,以便提供我的应用程序。
<img src="https://p6-tt.byteimg.com/origin/pgc-image/5a13744c68474eb9851cb992fc689587" width="30"/>配置管理:它通过记录和更新描述企业的硬件和软件的详细信息,建立并保持产品性能的一致性。此类信息通常包括已应用于已安装软件包的版本和更新以及硬件设备的位置和网络地址。例如:如果要在企业中存在的所有计算机上安装新版本的 Tomcat,那么手动更新每台计算机都是不可行的。您可以使用最简单的方式在 Ansible 剧本和清单中一次性在所有计算机上安装 Tomcat。您所要做的就是列出清单中节点的IP地址,并编写一本手册来安装Tomcat。从您的控制机器上运行该剧本,它将被安装在您的所有节点上。
<img src="https://p1-tt.byteimg.com/origin/pgc-image/35d05349b64b4157b43fa516a88a8ee1" width="30"/>应用部署:使用 Ansible 定义应用程序并使用 Ansible Tower 管理部署时,团队可以有效地管理从开发到生产的整个应用生命周期。例如,假设我要部署默认 Servlet 引擎。部署引擎需要执行许多步骤。

Ansible 的架构

  Ansible架构相当简单,参考下图:


image

  如您所见,在上图中,Ansible 自动化引擎与编写剧本以执行 Ansible 自动化引擎的用户直接交互。它还与云服务和配置管理数据库(CMDB)进行交互。
  Ansible 自动化引擎包括:

DevOps 中 Ansible

  众所周知,在 DevOps 中,开发和运营工作是集成在一起的。这种集成对于现代测试驱动的应用程序设计非常重要。因此,Ansible 通过为开发和运营提供稳定的环境用以集成,从而实现流畅的编排。请参考下图,看看 Ansible是如何融入 DevOps 的:

image
  现在让我们讨论 Ansible 如何管理整个 DevOps 基础设施。当开发人员开始将基础设施视为其应用程序的一部分时,即将基础设施即代码(IaC),稳定性和性能就成为规范。基础设施即代码是通过计算机可处理的定义文件(而不是物理硬件配置或使用交互式配置工具)来管理和供应计算基础架构(流程、裸机服务器、虚拟服务器等)及其配置的过程。在这方面 Ansible 自动化发挥了重要作用,并在同行中脱颖而出。
  在 DevOps 中,系统管理员与开发人员紧密合作,提高了开发速度,可以并花费更多的时间进行诸如性能调整,实验和完成工作之类的活动,而花费在解决问题上的时间却更少。 请参考下图,以了解 Ansible 如何简化 sysadmins 和其他用户的任务。
image
  至此,您知道了使用 Ansible 的好处。那么,现在让我们来看一个真实的例子,NASA 是如何通过 Ansible 受益的。

Ansible 案例研究 – NASA 的真实用法

<img src="https://p1-tt.byteimg.com/origin/pgc-image/4f01f9fd621440bca96abb5017ed07dc" width="60"/>
  让我们考虑一下 NASA 面临的业务挑战。

  NASA 需要将 65 个应用程序从传统的基于硬件的数据中心转移到基于云的环境中,以实现更好的敏捷性和成本节约。快速的时间表导致许多应用程序“按原样”迁移到云环境。这样就创建了一个环境,该环境跨越了多个难以轻松管理的虚拟私有云(VPC)和AWS账户。即使是简单的事情,例如确保每个系统管理员都可以访问每个服务器或简单的安全修补程序,也非常繁琐。
  解决方案是利用 Ansible Tower 来管理和调度云环境。
  因此,为了解决 NASA 缺乏集中管理和多样化环境的问题,他们评估了多种解决方案并决定实施 Ansible Tower。NASA 现在正在利用 Ansible Tower 以一种有组织、有计划的方式管理其环境。

NASA 如何使用 Ansible:

  Ansible Tower 提供了一个仪表板,该仪表板给出了所有主机和作业的状态摘要,允许 NASA 对所有内容进行分组,并管理不同部门的访问权限。它还通过关联内容和控制组的权限来帮助拆分组织。
  Ansible Tower 是一个基于 Web 的界面,用于管理 Ansible。在Ansible 的用户愿望清单中,最重要的一项是易于使用的UI,用于管理快速部署和监视其配置。Ansible 管理层提出了 Ansible Tower 作为回应。
  此外,Ansible 通过分配各种角色在团队中划分任务。它管理旧作业历史、活动流、标记为删除的数据和系统跟踪信息的清理。请参考下图,以了解 Ansible 是如何简化 NASA 的工作的。

image
  结果,NASA 实现了以下效率:
• 通过非常简单的 10 行 Ansible 剧本,可以通过 Ansible Tower 定期自动对 NASA Web 应用程序服务器进行修补。
• Ansible 还被用于补救安全问题,并被用于补救 OpenSSL 问题。这不仅节省了时间,而且可以快速修复一个非常棘手的安全问题。
• 每一周,都会通过 Ansible 更新 www.nasa.gov 的完整版和移动版,通常只需 5 分钟左右。
• 如果缺少任务关键人员的 OS 级用户帐户,则将对其进行连续检查和创建。现在,每个需要访问权限的人都可以访问,即使这意味着几乎立即从所有服务器中添加或删除用户。
• NASA 还将 Ansible facts 集成到其 CMDB、CloudAware 中,以提高整个 AWS 库存的管理可见性。结果,可以以一种非常细粒度的方式组织 AWS 资源的库存,这在以前是不可能的 。
• Ansible 还用于确保环境符合 FedRAMP 概述的必要联邦安全标准和其他监管要求。

结果:
  实施 Ansible 后,NASA 可以更好地管理其 AWS 环境。Ansible 使 NASA 能够为其客户提供更好的操作和安全保障。作为一个团队,它也提高了效率。
  如果我们从数字上看:
• 更新 nasa.gov 的时间从 1 小时以上缩短到 5 分钟以下
• 安全修补程序更新从多天的过程变为 45 分钟
• 实现近乎实时的 RAM 和磁盘监视(无需代理即可完成)
• 不到 10 分钟即可在整个环境中配置 OS 帐户
• 为标准 AMI(Amazon Machine Image)设定基准的过程从 1 个小时的手动配置变成了无形且无缝的后台流程
• 每个应用程序堆栈的建立时间从 1-2 小时减少到 10 分钟以下。
总结:Ansible 是一个开源软件供应、配置管理和应用程序部署工具,可将基础设施作为代码。它可以在许多类 Unix 系统上运行,并且可以配置类 Unix 系统和 Microsoft Windows。

上一篇下一篇

猜你喜欢

热点阅读