【.comExpress翻译】IaC概述现在一切都致力于数字化,尤其是在冠状病毒大流行之后,是时候妥善管理您的组织的IT基础架构变得更加重要。以前,IT基础架构的管理由组织的系统管理员手动完成。他们管理应用程序运行所需的所有硬件和软件。IT技术在过去几年取得了长足的进步,现在有一种替代这种手动管理的方法,称为“基础架构即代码(IaC)”。这里可以使用一个更具描述性的术语来定义IaC:基础设施即代码(IaC)是通过机器可读的定义文件而不是通过物理硬件配置或交互式配置工具来管理和配置数据中心的过程。IaCInfrastructureascode(IaC)解决了以往人工环境搭建和审批流程、成本高、硬件问题、人为失误等问题。IaC的方法论我们来看看“基础架构即代码”的四种方法:1.临时脚本临时脚本是流程自动化最直接的方法。这些脚本只是将人工流程分解为离散的步骤,以将其转换为自动化流程。组织可以借助Ruby、Python、Bash、PowerShell等脚本语言来做到这一点。如果组织运行一个临时脚本,它肯定会提供预期的结果,而且运行起来相当简单。但是,如果组织多次运行同一个临时脚本,则可能会出现错误。例如,如果您使用临时脚本创建一个文件夹,则必须仔细检查该文件夹是否仍然存在。以下是临时脚本的工作流程:采取人工操作并将其分解为离散的步骤。选择您最喜欢的脚本语言。在代码中定义和编写这些步骤。2.配置管理工具配置管理工具是为在现有服务器上安装和管理软件而设计的。这些工具的代码具有一致且可预测的结构、清晰命名的参数、适当的机密管理,甚至还有简单的文件布局。一些配置管理工具包括Ansible、Chef、Puppet和SaltStack。这些工具也称为幂等代码。幂等代码是无论相同代码运行或执行多少次都产生相同结果的代码或脚本。上述配置管理工具的设计方式使其可以在现有服务器上安装和管理软件。例如,Ansible将YAML文件用于运行手册。他们还可以管理大量远程服务器。3.服务器模板服务器模板工具用于创建服务器镜像。此映像捕获操作系统、软件、文件和所有其他相关详细信息的独立“快照”。它们被认为是配置管理工具的替代品。一些流行的服务器模板工具包括Docker、Packer和Vagrant。在下面更详细地了解一些工具:Docker:Docker用于为称为“容器”的应用程序创建隔离环境。Packer:它有助于打包所有依赖项并构建可部署的虚拟机映像。Vagrant:用于为开发环境配置虚拟机。Vagrant运行在VirtualBox、VMware、Hyper-V等虚拟机解决方案上,使用服务器模板工具,服务器部署后无需改动。如果要部署修改后的代码,则必须创建一个新映像并将其部署到新服务器上。这就是为什么使用服务器模板工具对于不可变基础架构至关重要。4.服务器配置服务器设置是根据需要的资源设置服务器,使其可以在网络中使用的过程。它包含创建新服务器并将其置于工作状态所需的所有操作,包括定义系统的所需状态。一些可以帮助创建服务器的服务器配置工具包括Terraform、AzureResourceManager模板、AWSCloudFormation和OpenStackHeat。Terraform是一种云计算基础设施配置工具,支持各种公共和私有云资源配置。它有助于使用称为状态文件的概念来维护基础设施的状态。除了创建服务器之外,上述服务器设置工具还可以让组织创建其他资源,例如数据库、负载平衡器、防火墙设置、存储等。IaC方法基础设施即代码有两种主要方法,命令式方法和声明式方法。在这两种方法中,IaC的配置都是在模板上完成的,模板描述了基础设施中每个服务器所需的资源。下面将更详细地了解这两种方法,并了解两者之间的区别。1.命令式方法这种方法定义了实现所需配置所需的具体步骤或命令。它还定义了执行这些命令的正确顺序。基本上,它处理实现的“方式”,即如何实现所需的配置。2.声明式方法这种方法定义了系统的理想状态。除了状态之外,只需要定义所需的资源和属性等其他信息,IaC工具将自行配置所有内容。它处理“什么”,即配置的期望状态。跨平台IaC的IaC良好实践以下是组织可以用来充分利用IaC的一些最佳实践:1.逐步实施当迁移到基础设施即代码时,这对许多员工来说可能具有挑战性,尤其是年长的员工。这是因为他们对这项技术以及它如何为组织运作没有太多经验。因此,一个组织的员工越容易掌握IaC,它就能提供更好的输出。2.让一切井井有条IaC的全部意义在于使一切自动化并尽可能消除手动工作,因此请尝试让您的整个基础设施井然有序。在配置文件中明确指定所有基础设施规范。与基础设施管理相关的一切都应该在这些配置文件中。3.持续测试、集成和部署IaC是代码,与任何其他代码一样,它应该被持续测试、集成和部署。这有助于检查服务器是否存在部署到生产环境之前可能发生的任何错误或不一致。它还确保整个基础架构正常运行,没有任何滞后或错误。4.不可变基础设施如上所述,不可变基础设施是指在部署后永远不会修改或更新的服务器或虚拟机。它有助于降低IT复杂性和故障、提高安全性并简化故障排除。不可变的基础架构还消除了任何类型的服务器补丁。5.版本控制建议将所有配置文件置于源码控制之下,这也是《代码实践》中推荐的基础架构。版本控制对于跟踪更改并使每个团队成员使用最新版本很重要。它适用于多个团队成员协作的所有代码和资产。除了管理和跟踪文件外,它还有助于更快地开发和交付产品。这是要走的路,因为它有助于提高可见性、团队成员之间的协作并加速产品交付。6.模块化模块化可以定义为可以通过编写许多运行手册或模块以各种方式组合或集成的模块开发。这些模块可以在未来的任何项目中重复使用。结论今天,基础设施的自动化是组织中每个团队的主要需求。迫切需要将手动管理和配置的基础设施迁移到IT或自动化基础设施,以更轻松、更高效地运行和管理系统。对于这种自动化,有许多工具和方法可用。而只采用一种工具并不能满足组织或团队的要求。因此,工具的选择应基于组织的要求和各种其他因素,如成本、技能、能力等。原标题:Infrastructure-as-Code(IaC):Methodologies,Approach,andBestPractices,作者:MirAli
