基础设施即代码的 DevSecGuide
Published on 14 Jun 2022
使用代码管理和交付基础设施的技术和技巧被称为基础设施即代码。版本控制、社区评审、自动化测试、标签、持续部署和持续交付都可以通过它实现。
IaC 的崛起
为了应对传统的基础设施交付和维护方式,DevOps 公司 Puppet 于 2009 年推出了基础设施即代码,通常称为 IaC。Puppet 表示:“基础设施管理的传统技术 — 手动程序和文档、脆弱的单一用途脚本和基于图形用户界面的工具 — 在过去都有其用处。”
然而,今天,随着基础设施不断增长的需求、临时基础设施的使用以及应用系统复杂性的增加,需要新的方法来保持控制。” IaC 现在已经成为多家企业的基石,包括 Ansible、Chef、Salt 等。
Terraform 是 HashiCorp 推出的一款著名开源 IaC 框架,主要用于描述公有云服务中的资源,近年来推动了 IaC 的发展。Terraform 让 IaC 变得无限灵活和易于访问,为 IaC 生态系统铺平了道路。
同时,云提供商已经开发了自己的配置框架,以帮助简化和自动化基础设施编排和管理。基础设施工程师可以使用 AWS CloudFormation、Azure Resource Manager (ARM) 和 Google 的 Cloud Deployment Manager 设计可重复的设置。
它是如何工作的?
IaC 可能是声明性的,这意味着它描述了将提供什么,也可能是命令性的,这意味着它定义了如何提供。Terraform 和 CloudFormation 是声明性框架,但 AWS Cloud Development Kit (CDK) 是命令式 IaC 框架。Kubernetes 也与 IaC 非常相似,因为它的配置可以用代码编写。
每个框架都有自己的标准和语法,但 IaC 由资源声明、输入变量、输出值、配置设置和其他参数组成。IaC 通常基于 JSON、HCL 或 YAML,并包含启动基础设施所需的所有配置,包括计算、网络、存储、安全、身份和访问管理 (IAM) 等。
基础设施即代码的优势
由于 IaC 使用代码来指定启动和运行资源所需的内容,因此它允许云配置自动化和扩展,并提高可重复性。
自动化
企业现在定期部署许多应用程序,而满足这些需求的基础设施要求也在不断发展。IaC 通过自动化所有人工设置来简化云配置。IaC 通过将手动基础设施设置转换为机器可读的模板,消除了开发人员手动配置和维护基础设施的需要。相反,它允许工程师使用自动化流程来创建、测试和部署新的基础设施。
可扩展性
IaC 使团队能够更简单、更可靠地大规模设置云服务,同时降低配置错误的风险并节省时间和金钱。自动化和代码配置使一致安装云服务变得更加简单。它还使在不使用时取消配置基础设施变得更加简单,从而降低总计算成本和维护支出。
重复性
云基础设施需要一致性。IaC 一致地部署计算、存储和网络服务,使您能够跨资源甚至跨多云设置保持一致性。这种一致性减少了人为错误,同时还允许进行全面的版本控制和日志记录。由于重复因素,您可以用更少的工作提供更多的资源,同时保持高质量标准、安全最佳实践和行业基准合规性。
安全
IaC 为跨团队沟通提供了重要机会。通过使用统一的标准语言跨环境和云提供云资源,开发人员和运营人员可以更轻松地保持一致并协作以安全地维护云原生应用。
下载 Paloalto 的白皮书,以仅通过在线白皮书了解有关基础设施即代码的 DevSecGuide 的更多信息。