1

基于维基百科的概念

基础架构即代码 (IaC) 是通过机器可读的定义文件而不是物理硬件配置或交互式配置工具来管理和配置计算机数据中心的过程

它适用于 Ansible、Chef、Puppet 和 PowerShell DSC 等配置工具,这些都是众所周知的自动化工具,在持续开发过程中非常有用。长期以来,这是我们使用代码创建应用程序所需的整个基础架构的最接近的方式。尽管如此,随着基础设施即服务的分离,我们变得能够真正管理网络、计算和存储基础设施。

如果我们计算IT 基础架构的另一种观点,将其定义为

支持数据流、存储、处理和分析的物理和虚拟资源的组合。

那么在我看来,基础设施可能更多地指的是网络/计算/存储资源,即 IaaS 资源。我想到的工具是Azure 资源管理器模板AWS CloudFormation;它从头开始创建基础架构,当然,配置工具可以作为自动化系统配置的一个很好的补充。

基础设施即代码应该用于指代供应/自动化/部署工具,还是应该只突出那些通过代码允许虚拟资源自动化和管理的工具?

4

2 回答 2

1

基础设施即代码应该用于指代供应/自动化/部署工具,还是应该只突出那些通过代码允许虚拟资源自动化和管理的工具?

两者都不。IaC 不是指工具。它指的是一个过程。从你自己的报价:

基础设施即代码 (IaC) 是管理和配置计算机数据中心的过程......

区别很简单:

  • 在过去,如果您知道您的软件需要 Windows 7 SP2,则该过程将是为您的系统工程师输入一张票,以将 Windows 7 SP2 应用到服务器。

  • 在 IaC 时代,如果您知道您的软件需要 Windows 7 SP2,则过程将是修改源代码并签入。

旧的过程非常耗时,从开发人员手中夺走了控制权,而且不可重复,这可能会导致错误或在 O/S 上设置事物的方式存在细微差异。回滚也可能很困难。系统“版本”可能存储为 VM 映像或备份,它们往往非常大。

如果设置正确,新流程是完全可重复的、非常快速的,并将开发人员置于驾驶座上。您可以在源代码控制中保留任意多个版本,回滚就像回滚软件一样简单。

实施 IaC 的行为是启用后一个过程的行为——购买、集成或开发允许您通过代码签入来修改系统的工具。这就是“代码”部分如此重要的原因。如果你管理代码,你就管理硬件。

于 2018-09-05T02:56:13.957 回答
1

我想到的一个工具是 Azure 资源管理器模板,恕我直言,在 IaC 真正成形的 IaaS 解决方案中。

再说说 Azure 资源管理器模板,它允许人们通过代码方便地创建或重新创建资源,就像模板一样。正如你所说,

基础设施即代码 (IaC) 是通过机器可读的定义文件管理和配置计算机数据中心的过程

因此,在我自己看来,基础设施即代码应该只突出那些通过代码允许虚拟资源自动化和管理的内容。它更适合 IaC。假设如果基础设施不能由代码管理,我们就不能认为它是基础设施即代码。

于 2018-08-30T09:54:22.037 回答