什么是“基础架构即代码”?


Answers:


11

TL; DR基础架构即代码是一种自动化和备份环境的方法。在理想情况下,灾难发生后,您可以通过置备新资源,从代码存储库还原配置以及从备份恢复数据来完全自动地还原基础结构。

总览

基础架构即代码依赖于三个主要概念:

自动化

配置管理是其第三代工具。现在,在CFEngine的基础上,广泛部署了一套用于自动配置管理的新工具。最受欢迎的字母顺序是Ansible,CFEngine,Chef,Puppet,PowerShell DSC和SaltStack。每个组件都有一种语言来描述您的基础结构状态,代码模块来应用那些更改并提供扩展工具的能力,一些代理程序来在服务器上执行那些代码以及一个中央信息

它们通常将以推或拉模式运行,或者从中央位置连接到服务器并远程执行更改,或者在每个服务器上运行,并从中央位置以及客户端/服务器模型或分布式模式中获取有关状态的信息。办法。

重要的概念是系统管理员或网站可靠性工程师不能直接修改的基础设施,而是让自动化做改变。人工完成的任何操作都应被视为易腐烂,很快被自动化纠正或以更严格的形式违反基础架构的完整性并触发受影响组件的破坏和重建。

代码库

理想情况下,与存储库保存软件分开的代码存储库将用于管理对基础结构和相关自动化的所有更改。它应包含配置文件和模板,描述要检查的更改过程的剧本(Cookbook),扩展CM自动化工具的代码,配置配置,基础结构测试和警报,登台/部署测试,文档,手册(尚未自动化),流程说明。

重要的概念是对更改进行同行评审,具有所有更改的记录,并在出现不可预测和/或未经测试的问题时能够自动恢复到以前的状态,能够部署到暂存环境和测试配置更改,并且能够自动部署变化而不会因人为错误而导致变化。

托管基础架构

管理物理基础架构是一项现实世界的任务,它不仅限于软件,还需要非常不同的技能。通过能够通过云计算或托管数据中心对这一层进行抽象,您可以让您的团队专注于管理基础架构以增加业务价值的部分。

尽管云计算提供了一种在稍后阶段快速启动和扩展的方法,但公司通常会在混合模型的自身数据中心中移动基础架构的某些部分时获得一些好处,甚至可以节省很多钱。拥有或租用硬件并不意味着您也必须聘请处理硬件的人员。在这种规模下,您需要分布在全球各地的数据中心,而在所有地方拥有具备所有必需技能的人员将非常昂贵。在全球范围内飞行它们会增加任何更改的高延迟,并进一步提高运营效率,这是将数据中心管理外包的另一个原因。

重要的要点是,托管物理基础架构通常是被遗忘或被忽略的概念,但同样重要。即使您已将所有工作自动化,所有配置都存储在备份的代码存储库中,除非您有快速配置的方法,否则您将面临巨大的瓶颈,这很容易消除其他两个步骤所带来的所有好处。


5

在解释它到底是什么之前,让我引用一个非常好的定义,直接来自Wikipedia

基础架构即代码(IaC)是通过计算机可处理的定义文件而不是物理硬件配置或使用交互式配置来管理和配置计算基础架构(流程,裸机服务器,虚拟服务器等)及其配置的过程。工具。

好的,现在让我们来看一个这样的IaC工具Terraform,以更好地理解这一概念:https://www.terraform.io/

另外,这就是Terraform对自己的评价:

Terraform使您能够安全,可预测地创建,更改和改善生产基础架构。这是一个开放源代码工具,可将API编码为声明性配置文件,这些文件可以在团队成员之间共享,视为代码,进行编辑,查看和版本控制。

这意味着,一个人可以对整个基础进行编码。其中包括创建云(/ infra)资源(例如服务器实例,负载平衡器等)以及完整的配置(包括基本设置调整,安全设置,区域等)作为代码,并且可以进行编辑,版本控制和当然,可以审查。

这是用于配置AWS资源的Terraform代码的示例示例:

resource "aws_elb" "frontend" {
  name = "frontend-load-balancer"
  listener {
    instance_port     = 8000
    instance_protocol = "http"
    lb_port           = 80
    lb_protocol       = "http"
  }

  instances = ["${aws_instance.app.*.id}"]
}

resource "aws_instance" "app" {
  count = 5

  ami           = "ami-408c7f28"
  instance_type = "t1.micro"
}

额外的PS:另外,您需要了解配置编排工具之间的差异。开发人员经常将彼此混淆,往往会犯错误,试图对其进行调整并使用其不打算使用的工具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.