长期以来,似乎系统管理员唯一关心的就是自动化。然而,最近,口头禅似乎已从自动化变为编排,这让许多困惑的管理员想知道:“有什么区别?”
自动化和编排之间的区别主要在于意图和工具。从技术上讲,自动化可以被认为是编排的一个子集。虽然编排暗示着许多活动的部件,但自动化通常指的是单个任务或少量密切相关的任务。编排在更高的层次上工作,并且有望根据不断变化的条件和需求做出决策。
但是,这种观点不应被过于字面地理解,因为术语——自动化和编排——在使用时确实具有含义。两者的结果在功能上是相同的:事情的发生无需您的直接干预。但是您获得这些结果的方式以及您用来实现这些结果的工具是不同的,或者至少这些术语的使用方式因您使用的工具而异。
例如,自动化通常涉及脚本编写,通常使用 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 条评论