共计 6453 个字符,预计需要花费 17 分钟才能阅读完成。
【注】本文译自:https://www.edureka.co/blog/w…
Ansible 是一个开源的 IT 配置管理、部署和编排工具。它旨在为各种自动化挑战提供微小的生产率收益。该工具应用非常简单,但功能强大,能够自动化简单的多层 IT 应用程序环境。
通过本文,您将学习:
- Ansible 是什么?
- 为什么咱们须要 Ansible?
- 应用 Ansible 的长处
- Ansible 能做什么?
- Ansible 架构
- DevOps 中的 Ansible
- NASA 对 Ansible 的理论用法
一些 Ansible 术语,能够帮忙您更好地了解 Ansible。
为什么咱们须要 Ansible?
在晓得什么是 Ansible 之前,有很必要理解 Ansible 呈现之前所面临的问题。
让咱们略微回顾一下:在网络计算的开始、牢靠而高效地部署和治理服务器成为一项挑战之时。在那个时候,系统管理员手动治理服务器,在单个服务器上安装软件,更改配置以及治理服务。
随着数据中心的倒退以及托管应用程序的日益简单,管理员意识到他们无奈满足启用的应用程序那样疾速地扩大其手动系统管理。因为开发团队是麻利的,并且常常公布软件,然而 IT 经营破费很多工夫来配置零碎,从而妨碍了开发人员的工作速度。这就促成了服务器配置和配置管理工具的蓬勃发展。
考虑一下治理服务器队列的繁琐例程。咱们始终须要不断更新,推送更改,在其上复制文件等。这些工作使事件变得非常复杂且耗时。
然而,让我告诉您,上述问题有解决方案。那就是 – Ansible。
在全面介绍 Ansible 之前,首先让咱们相熟一些 Ansible 术语:
Ansible 术语:- 控制器机器:装置 Ansible 的机器,负责在您治理的服务器上运行资源调配。
- 库存:一个初始化文件,其中蕴含无关您所治理的服务器的信息。
- 剧本:Ansible 置备的入口点,其中的自动化是通过应用 YAML 格局的工作定义的。
- 工作:定义要执行的单个过程的块,例如装置软件包。
- 模块:模块通常形象一个零碎工作,例如处理程序包或创立和更改文件。Ansible 具备许多内置模块,然而您也能够创立自定义模块。
- 角色:一种预定义方法,用于组织剧本和其余文件,以便于共享和重用配置的各个局部。
- 播放:从头到尾执行的预配称为播放。简略来说,执行剧本称为播放。
- Fact:蕴含无关零碎信息的全局变量,例如网络接口或操作系统。
处理程序:用于触发服务状态更改,例如重新启动或进行服务。
Ansible 是一个有用的工具,可让您创立一组机器,形容如何配置这些机器或应答它们采取什么操作。Ansible 从地方地位收回所有命令来执行这些工作。
节点计算机上未装置其余客户端软件。它应用 SSH 连贯到节点。Ansible 只须要装置在甚至能够是笔记本电脑的管制机器(您将在其上运行命令的机器)上。这是解决简单问题的简略办法。
当我说 Ansible 填补了配置管理和 IT 编排世界中的所有破绽时,我并没有自夸。当您看看上面提到的 Ansible 的益处时,您也会晓得的:应用 Ansible 的长处
简略:Ansible 应用 YAML 格局的简略语法,称为剧本。YAML 是一种人类可读的数据序列化语言。这非常简单。因而,不须要任何非凡的编码技能,甚至您的 IT 组织中不理解 Ansible 的人都能够浏览剧本并理解正在产生的事件。Ansible 总是按程序执行工作。装置也很简略。总之,简略性确保您能够疾速入门。
无代理:最初,Ansible 是齐全无代理的。您无需在要主动执行的客户端零碎或主机上安装任何代理 / 软件或其余防火墙端口。您不用独自设置治理根底构造,包含治理整个零碎,网络和存储。Ansible 进一步缩小了团队立刻开始自动化的工作量。
弱小而灵便:Ansible 具备弱小的性能,能够使您对最简单的 IT 工作流程进行建模。在这方面,Ansible 的内置电池办法(这种理念意味着自力更生的、开箱即用,具备所需的所有),能够治理您所须要的基础设施、网络、操作系统和服务已被应用,因为 Ansible 为您提供了数百个模块来对其进行治理。Ansible 的性能使您能够编排整个应用环境,而不论它被部署在何处。
高效:服务器上没有额定的软件,意味着更多的应用程序资源。另外,因为 Ansible 模块通过 JSON 进行工作,因而 Ansible 能够通过应用你相熟的编程语言编写模块进行扩大。Ansible 引入了模块作为软件的根本构建块。因而,您甚至能够依据须要自定义它。例如如果您已有一个以纯文本格式发送音讯的音讯发送模块,并且您也想发送图像,也能够增加图像发送性能。Ansible 能做什么?
Ansible 通常与其余配置管理工具(如 Puppet,Chef,SaltStack 等)一起分组。嗯,让我告诉您,Ansible 不仅限于配置管理。它也能够以许多不同的形式应用。上面我会提到一些:
设置:您的应用程序必须位于某个中央。如果您是 PXE(预疏导执行环境)疏导并启动裸机服务器或虚拟机,或者从模板创立虚构或云实例,则 Ansible&Ansible Tower 可帮忙简化此过程。例如,如果我要测试应用 Visual C ++ 构建的应用程序的调试版本,则应该满足一些先决条件,例如领有 Visual C ++ 库 DLL(msvcr100d.dll)。我还将须要在您的计算机中装置 Visual Studio。这时 Ansible 会确保所需的软件已下载并装置,以便提供我的应用程序。
配置管理:它通过记录和更新形容企业的硬件和软件的详细信息,建设并放弃产品性能的一致性。此类信息通常包含已利用于已装置软件包的版本和更新以及硬件设施的地位和网络地址。例如:如果要在企业中存在的所有计算机上安装新版本的 Tomcat,那么手动更新每台计算机都是不可行的。您能够应用最简略的形式在 Ansible 剧本和清单中一次性在所有计算机上安装 Tomcat。您所要做的就是列出清单中节点的 IP 地址,并编写一本手册来装置 Tomcat。从您的管制机器上运行该剧本,它将被装置在您的所有节点上。
利用部署:应用 Ansible 定义应用程序并应用 Ansible Tower 治理部署时,团队能够无效地治理从开发到生产的整个利用生命周期。例如,假如我要部署默认 Servlet 引擎。部署引擎须要执行许多步骤。- 将 .war 应用程序从 dropins 目录挪动到 apps 目录
- 增加 server.xml 文件
导航至该网页以查看您的利用。
然而,当咱们领有 Ansible 之类的工具时,为什么还要放心一步一步地执行这些步骤。您所须要做的就是在 Ansible 剧本中列出这些工作,而后坐下来观看 Ansible 按程序执行这些工作。
安全性和合规性:在 Ansible 中定义安全策略时,能够将站点范畴安全策略的扫描和修复集成到其余自动化过程中。而且它将在部署的所有内容中不可或缺。这意味着,您须要在管制计算机中配置一次平安详细信息,而后将其主动嵌入到所有其余节点中。此外,Ansible 中存储的所有凭据(管理员用户 ID 和明码)都无奈以任何纯文本格式检索。
编排:独自的配置并不能定义您的环境。您须要定义多个配置如何交互,并确保能够将不同的局部作为一个整体进行治理。在复杂性和凌乱性中,Ansible 带来了秩序。Ansible 提供了业务申请与应用程序、数据和基础设施保持一致的编排。它通过自动化工作流、供给和变更治理来定义策略和服务级别。这将创立一个与应用程序保持一致的基础设施,能够依据每个应用程序的需要扩充或放大规模。
例如:考虑一下我想部署一个新网站来代替现有网站的状况。为此,咱们将删除现有网站,并部署新网站,并在须要时重新启动负载均衡器或 Web 群集。当初,如果咱们只是这样做,用户将留神到停机,因为咱们尚未删除通过负载平衡器进入这些计算机的实时流量。因而,咱们须要某种类型的预工作,在该工作中,咱们通知负载平衡器将此 Web 服务器置于保护模式,以便在降级时临时禁止流量通过。假如我在此处增加了一个模块,它的前置工作是禁用负载均衡器中的 Web 节点。
因而,这是咱们的前置工作,在此咱们禁用流量,而后在此处应用这些不同的工作降级节点。最初,咱们须要某种类型的后置工作,通过使它退出保护模式,能够再次使流量达到该 Web 节点。这些工作能够写在 Ansible 剧本中,因而有助于编排环境。
当你对 Ansible 的架构有一个清晰的理解时,你就会更好地了解 Ansible 的工作原理。Ansible 的架构
Ansible 架构相当简略,参考下图:
如您所见,在上图中,Ansible 自动化引擎与编写剧本以执行 Ansible 自动化引擎的用户间接交互。它还与云服务和配置管理数据库(CMDB)进行交互。
Ansible 自动化引擎包含:- 清单:Ansible 清单是须要治理的主机(节点)及其 IP 地址,服务器,数据库等的殂。而后,Ansible 通过传输工具采取行动 – UNIX,Linux 或网络设备应用 SSH,Windows 零碎应用 WinRM。
- APIs:Ansible 中的 API 用作云服务的传输,能够是私有云,也能够是公有云。
模块:模块通过剧本间接在近程主机上执行。这些模块能够控制系统资源,例如服务,程序包或文件(实际上是任何货色),或执行系统命令。模块通过操作系统文件、装置软件包或对服务网络进行 API 调用来实现。Ansible 提供的模块超过 450 个,可主动执行环境的简直每个局部。例如:
- 云模块(例如 cloudformation),用于创立或删除 AWS 云组栈;
- 诸如 mssql_db 之类的数据库模块可从近程主机中删除 MYSQL 数据库。
插件:插件容许在工作构建步骤中执行 Ansible 工作。插件是加强 Ansible 外围性能的代码片段。Ansible 附带了许多不便的插件,您能够轻松编写本人的插件。例如:
- Action 插件是模块的前端,能够在调用模块自身之前在控制器上执行工作。
- Cache 插件用于保留“facts”缓存,以防止低廉的事实收集操作。
- Callback 插件使您能够挂钩 Ansible 事件以进行显示或记录。
Ansible 架构中还有一些其余组件,解释如下:
- 网络:Ansible 也能够用于自动化不同的网络。Ansible 应用的是 IT 经营和开发部门已在应用的简略、弱小且无代理的自动化框架。应用与 Ansible 自动化引擎拆散的数据模型(剧本或角色),该引擎可轻松逾越不同的网络硬件。
- 主机:Ansible 架构中的主机只是由 Ansible 自动化的节点零碎。它能够是任何类型的机器:Windows、Linux、RedHat 等。
- 剧本:剧本是以 YAML 格局编写的简略文件,形容了 Ansible 要执行的工作。剧本能够申明配置,但即便蕴含跳转语句,它们也能够协调任何手动排序过程的步骤。他们能够同步或异步启动工作。
- CMDB:它是一个存储库,充当 IT 装置的数据仓库。它保留与 IT 资产汇合(通常称为配置项(CI))无关的数据,并形容这些资产之间的关系。
云:它是由托管在 Internet 上的近程服务器网络,用于存储、治理和解决数据,而不是本地服务器。您能够在云上启动资源和实例,并连贯到服务器。
DevOps 中 Ansible
家喻户晓,在 DevOps 中,开发和经营工作是集成在一起的。这种集成对于古代测试驱动的利用程序设计十分重要。因而,Ansible 通过为开发和经营提供稳固的环境用以集成,从而实现晦涩的编排。请参考下图,看看 Ansible 是如何融入 DevOps 的:
当初让咱们探讨 Ansible 如何治理整个 DevOps 基础设施。当开发人员开始将基础设施视为其应用程序的一部分时,行将基础设施即代码(IaC),稳定性和性能就成为标准。基础设施即代码是通过计算机可解决的定义文件(而不是物理硬件配置或应用交互式配置工具)来治理和供给计算基础架构(流程、裸机服务器、虚构服务器等)及其配置的过程。在这方面 Ansible 自动化施展了重要作用,并在同行中怀才不遇。
在 DevOps 中,系统管理员与开发人员严密单干,进步了开发速度,能够并破费更多的工夫进行诸如性能调整,试验和实现工作之类的流动,而破费在解决问题上的工夫却更少。请参考下图,以理解 Ansible 如何简化 sysadmins 和其余用户的工作。
至此,您晓得了应用 Ansible 的益处。那么,当初让咱们来看一个实在的例子,NASA 是如何通过 Ansible 受害的。Ansible 案例钻研 – NASA 的实在用法
让咱们考虑一下 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 的工作的。
后果,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。