长期以来,似乎系统管理员唯一关心的就是自动化。然而,最近,口头禅似乎已从自动化变为编排,导致许多困惑的管理员想知道:“有什么区别?”
自动化和编排之间的区别主要在于意图和工具。从技术上讲,自动化可以被认为是编排的子集。虽然编排暗示了许多移动部件,但自动化通常指的是单个任务或少量密切相关的任务。编排在更高的层面上工作,并且有望根据不断变化的条件和要求做出决策。
但是,这种观点不应过于字面理解,因为术语自动化和编排在使用时确实有含义。两者的结果在功能上是相同的:事情会在没有您直接干预的情况下发生。但是,您获得这些结果的方式,以及您用来实现这些结果的工具,是不同的,或者至少这些术语的使用方式因您使用的工具而异。
例如,自动化通常涉及脚本编写,通常使用 Bash 或 Python 或类似的语言,并且通常暗示计划在精确的时间或特定事件发生时执行某些操作。然而,编排通常从一个应用程序开始,该应用程序是专门为一组可能不定期、按需或作为任何数量的触发事件的结果而发生的任务而构建的,并且确切的结果甚至可能取决于各种条件。
决策制定和 IT 编排
自动化表明系统管理员发明了一种系统,使计算机能够执行通常必须手动完成的操作。在自动化中,系统管理员已经对需要完成的大部分工作做出了决定,而计算机所要做的只是执行一个“配方”任务。
编排表明系统管理员已经建立了一个系统,根据一组规则、参数和观察结果自行执行某些操作。在编排中,系统管理员知道期望的最终结果,但将其留给计算机来决定做什么。
考虑一下 Ansible 和 Bash。Bash 是一种流行的 shell 和脚本语言,系统管理员使用它来完成他们在给定工作日内实际完成的所有工作。使用 Bash 进行自动化非常简单:您无需在交互式会话中键入命令,而是将命令键入到文本文档中,并将文件另存为 shell 脚本。Bash 运行 shell 脚本,依次执行每个命令。其中有一些条件决策的空间,但通常,它并不比简单的 if-then 语句复杂,每个语句都必须编码到脚本中。
另一方面,Ansible 使用 playbook,系统管理员在其中描述计算机的期望状态。它列出了 Ansible 认为作业完成之前必须满足的要求。当 Ansible 运行时,它会根据计算机的当前状态与期望状态进行比较,并根据计算机的操作系统等采取操作。playbook 不包含特定命令,而是将这些决策留给 Ansible 本身。
当然,特别值得注意的是,Ansible 被称为自动化工具,而不是编排工具。区别可能很微妙,并且这些术语肯定会重叠。
编排与云
假设您需要转换用户定期上传到服务器的文件类型。
手动解决方案是每天早上检查目录中是否有上传的内容,打开文件,然后以不同的格式保存。此解决方案速度慢、效率低下,并且可能每 24 小时只能发生一次,因为您是一个忙碌的人。
[接下来阅读:如何用简明的英语解释编排]
您可以自动化该任务。如果您这样做,您可以编写 PHP 或 Node.js 脚本来检测何时上传了文件。该脚本将执行转换并发送警报或进行日志条目以确认转换成功。您可以随着时间的推移改进脚本,以允许用户与上传和转换过程进行交互。
如果您要编排该过程,您可能会改为从应用程序开始。您的自定义应用程序将设计为接受和转换文件。您可以在云中的容器中运行该应用程序,并且使用 OpenShift,当流量或工作负载超过某个阈值时,您可以启动应用程序的其他实例。
学习自动化和编排
自动化或编排不仅仅只有一个学科。这些是广泛的实践,应用于许多不同行业中的许多不同任务。但是,学习的第一步是熟练掌握您要编排和自动化的技术。如果您不了解 Web 服务器的工作原理,或者需要打开或关闭哪些端口,或者端口是什么,则很难(安全地)编排扩展一系列 Web 服务器。实际上,您可能不是打开端口或配置服务器的人员;您可能会被委派管理 OpenShift,而无需真正了解或关心容器内部的内容。但是基本概念很重要,因为它们广泛适用于可用性、故障排除和安全性。
您还需要熟悉编排和自动化世界中最常用的工具。学习一些 Bash,开始使用 Git 并设计一些 Git hooks,学习一些 Python,熟悉 YAML 和 Ansible,并尝试使用 Minikube、OKD 和 OpenShift。
编排和自动化是重要的技能,既可以提高您的工作效率,又可以为您的团队带来价值。今天就投入其中,明天就能完成两倍的工作。
4 条评论