了解对基础设施即代码(基础设施即代码是什么意思)

了解对基础设施即代码(基础设施即代码是什么意思)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-01-07
文章简介

基础设施即代码(IaC)是一个自动化云资源供应和管理的过程。IaC软件采用一些描述所需状态的输入脚本,然后通常通过API与云供应商进行通信,以使现实与所需状态相匹配。本文将涵盖IaC的重要方面,首先是

2025阿里云双十一服务器活动

基础设施即代码(IaC)是一个自动化云资源供应和管理的过程。IaC软件采用一些描述所需状态的输入脚本,然后通常通过API与云供应商进行通信,以使现实与所需状态相匹配。本文将涵盖IaC的重要方面,首先是它是如何产生的(即它解决了哪些问题),然后是它的好处,最后是如何将IaC集成到您的组织中。

曾几何时,当企业想要运行软件时,唯一的选择是从网络提供商处订购一些物理设备和互联网接入。这些是现场数据中心,公司必须根据预期流量提前数周甚至数月订购服务器和网络设备,然后在现场手动配置。这需要一个带有冷却系统的物理位置和无数小时来执行安装和维护操作。但是后来,出现了可以管理其他企业服务器的公共数据中心。

运营数据中心本身成为一项可行的业务,为客户带来巨大优势:

  • 无需专用且昂贵的服务器机房
  • 通用服务器和网络项目的交货时间可能会缩短
  • 由数据中心提供商处理的服务器/设备的物理管理
  • 虚拟化的出现带来了另一种演变:云。在公共(或私有)云中,物理设备位于云供应商的数据中心,仍然需要人工处理。虚拟服务器可通过Web界面供企业使用,使他们能够在几秒钟内(或最大资源的几分钟内)配置服务器和其他资源。在这个阶段,虽然虚拟化允许非常快速的配置,但大多数操作仍然是手动的。

    IaC概念和工具的出现带来了最终的发展。一旦可以通过API访问云,资源的配置和管理就可以由脚本和自动化工具而不是人工来处理。所以现在,一旦安装并连接了物理设备(仍然是手动操作),其他一切都可以自动化,包括所有虚拟硬件资源的配置。

    以编程方式访问公共云的能力促成了IaC的兴起。在IaC出现之前,系统工程师必须手动通过Web界面来供应和配置资源。使用IaC,资源的供应和配置在脚本中描述,这些脚本由与公共云API通信的工具读取,以确保现实与所需状态相匹配。

    如上所述,IaC工具使用来自脚本的输入;这些脚本由人类编写,描述了给定云资源的理想状态。这些工具通过其API与云供应商通信以创建、更新或删除资源,以便现实与输入脚本中描述的所需状态相匹配。与手动供应和配置相比,IaC提供了单一的真实来源(输入脚本),从而消除了大多数人为错误。

    运行IaC脚本是一个可重复的操作,每次都会产生完全相同的结果。这可以在很多方面提供帮助,例如:

  • 在不同位置和/或为不同项目部署相同的工作负载
  • 了解对基础设施即代码,基础设施即代码是什么意思

  • 通过从IaC脚本和生产环境的最后备份快速创建一个新的、相同的环境来执行灾难恢复
  • IaC脚本可以保存在git存储库中,为您提供基础架构的历史记录。作为额外的好处,由于脚本只是文本,因此可以比较版本以查看已添加、更改或删除的内容。

    另一个好处是IaC允许初级系统管理员或非技术人员在没有技术知识的情况下创建整个工作负载。如果您正确配置您的云帐户,您甚至可以允许具有有限权限的用户通过IaC工具创建这样的工作负载,即使该用户没有直接创建资源的权限。您还可以利用额外的工具和模板来确保更早地实施安全策略,以限制实例化IaC堆栈的任何人造成安全漏洞和错误配置的可能性。

    除了精确的可重复性之外,IaC相对于手动操作的最大优势之一是它的可扩展性。事实上,您只需编写一次IaC脚本,然后工作负载就可以随心所欲地实例化,几乎是即时的。通过花更多时间在IaC脚本中设计正确的权限,可以避免手动工作向角色和资源授予过多权限的典型缺点。

    通常,您希望将当前手动执行的一些操作自动化。因此,第一步是记录构建工作负载所需基础架构所需的手动步骤。这些是您将通过IaC自动化的步骤。

    然后你需要选择一个IaC软件。这应该不是一个困难的选择,因为只有少数几个,而且三大云提供商都有自己的:AmazonWebServices提供CloudFormation,MicrosoftAzure提供AzureResourceManager,GoogleCloudPlatform提供GoogleCloudDeploymentManager。与供应商无关的最著名的选项是Terraform,它不仅支持上述三个云供应商,而且支持更多云供应商。

    接下来,您需要为您选择的IaC工具编写一些脚本,以重现您记录的手动步骤。在进行过程中测试这些通常是个好主意。换句话说:编写一些IaC代码,部署它,测试它,当你满意它看起来不错时,继续下一段代码。如果一次性编写所有内容,代码中可能会出现重大缺陷,只有在工作数小时后才会发现,这意味着您可能不得不重写脚本的很大一部分。

    此外,ShiftLeft的话题也持续上热搜。这实质上意味着您尽早开始测试并专注于预防问题(而不是在问题发生后检测和解决)。这个想法是整体质量和安全性将因此提高。

    理想情况下,这种左移应该尽可能地利用自动化。事实上,有多种工具可用于自动化编写IaC脚本的某些方面,例如安全性和合规性。这些工具会在任何部署之前扫描代码,以减少错误配置、过于宽松的设置和已知漏洞等问题的发生。此处提供了一些与此相关的用例供您细读。

    为了正确使用IaC,编写IaC脚本的人必须对所使用的云平台有深入的了解。因此,建议确保您的IaC工作中最关键的部分由高级DevOps工程师完成。

    拥有一支(或至少一名)高级DevOps工程师团队负责领导您的IaC工作通常是个好主意。该团队将能够专注于最佳实践和安全性,从而为更多初级工程师提供可遵循的蓝图。它还将能够编写可在组织内跨IaC脚本重复使用的通用模块,为更多初级工程师提供易于使用的预先审查的构建块。

    如果严格的安全性很重要,并且很可能这个团队也可以负责审查公开可用的模块和软件。在网上很容易找到一些IaC模块;Terraform甚至拥有这些的官方存储库。此类公开可用的模块可能不符合您的组织或项目中应用的安全标准。因此,确保您的IaC团队只使用经过审查的模块非常重要。

    此外,让您的SecOps团队与您的DevOps团队一起工作是个好主意。这种合作将使DevOps流程在项目早期的安全性方面得到优化。生产部署后检测到的错误可能代价高昂,尤其是在客户关系方面。在过程的早期确保高质量将大大有助于避免任何此类灾难。

    虽然IaC是最近才发展起来的,但现在IaC应该成为任何需要云资源的组织的配置策略的重要组成部分,并且至少应该对其进行评估以包含在您的团队中。无论您的组织规模如何,您很可能希望IaC至少管理您的部分工作负载。

    标签:
    什么是安全SDLC(什么是安全隐患)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!