长期以来,似乎系统管理员唯一关心的就是自动化。然而,最近,口头禅似乎已从自动化变为编排,这让许多困惑的管理员想知道:“有什么区别?”
自动化和编排之间的区别主要在于意图和工具。从技术上讲,自动化可以被认为是编排的一个子集。虽然编排暗示了许多移动部件,但自动化通常指的是单个任务或少量密切相关的任务。编排在更高的层次上工作,并且有望根据不断变化的条件和需求做出决策。
但是,不应过于字面地理解这种观点,因为术语自动化和编排在使用时确实具有含义。两者的结果在功能上是相同的:事情在没有您直接干预的情况下发生。但是,获得这些结果的方式,以及您用来实现这些结果的工具是不同的,或者至少这些术语的使用方式因您使用的工具而异。
例如,自动化通常涉及脚本编写,通常使用 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 钩子,学习一些 Python,熟悉 YAML 和 Ansible,并尝试 Minikube、OKD 和 OpenShift。
编排和自动化都是重要的技能,既可以提高您的工作效率,又可以为您的团队带来价值。今天就投入其中,明天就能完成两倍的工作。
4 条评论