Terraform 系列-什么是 IaC

科技资讯 投稿 7000 0 评论

Terraform 系列-什么是 IaC

系列文章

前言

聊到 Terraform, 必然绕不开 IaC 这个概念?那么,什么是 IaC? 🤔

基本概念

代码而不是手动流程/控制台点击来管理和配置基础架构。

    Infrastructure
  • Code

Infrastructure 是被管理对象,在这里,主要是指公有云(还有私有云、混合云等).
Code 是管理方式,即像管理代码一样管理公有云资源。那么管理代码最重要的部分: 版本管理是绕不开的。

版本控制是 IaC 的重要组成部分,配置文件应该像任何其他软件源代码文件一样受到源代码控制。
另外,随着公有云的发展,公有云的标准化的 API 也使得将基础架构组件模块化 (Terraform 里叫做 modules 成为可能,使用者可以像搭积木一样组合这些基础的组件。比如:在 AWS 上建个静态博客,就可以组合以下组件:

    Route53
  • CloudFront
  • S3

IaC 的两种实现方式

声明式和命令式

Terraform 就是基于 IaC 声明式的理念。在 Terraform 流行之前,另一个将声明式发扬光大的当然是:Kubernetes!

相反,命令式方法定义了实现所需配置所需的特定命令,然后需要以正确的顺序执行这些命令。

IaC 工具通常能够在两种方法中运行,但往往更喜欢一种方法而不是另一种方法。

local-exec

IaC 的好处

置备基础设施历来是一个耗时且成本高昂的手动过程。现在基础设施管理已经从数据中心的物理硬件、虚拟化转移到容器和云计算。

IaC 可以帮助您的组织管理 IT 基础设施需求,同时提高一致性并减少错误和手动配置。

好处

    降低成本
  • 提高部署速度
  • 减少(手动配置)错误
  • 提高基础设施一致性
  • 消除配置漂移

Terraform 是 IaC 领域事实上的领导者

毋庸置疑的,Terraform 是 IaC 领域事实上的领导者。

IaC 工具

声明式:

    Terraform
  • AWS CloudFormation(🐾: 绑定 AWS
  • Pulumi
  • CrossPlane
    Puppet
  • Chef
  • Ansible
  • SaltStack

为什么近期流行的都是声明式的 IaC?

我觉得主要有以下原因:

    Kubernetes 的标杆作用
  1. 公有云云资源以及 API 的标准化、规模化
  2. 具体到云主机,cloud-init、packer(制作云镜像越来越方便)、不可变基础设施也是原因之一。

为什么 IaC 对 DevOps 很重要?

这样一来,应用程序部署就不会因等待基础架构而停止,系统管理员也不需要管理耗时的手动流程。那么整个开发部署迭代的流程就会越来越快,越来越快。.。

而且每个环境都可以使用相同的部署过程。环境一致性也有保障,开发上测试通过的,生产上出问题的概率也小。

总结

IaC 是什么?基础架构即代码 (Infrastructure as Code, IaC 是指通过代码而不是手动流程/控制台点击来管理和配置基础架构。

为什么需要 IaC? 随着云计算带来的大量基础设施,IaC 已成必备工具。

IaC 也可以和 DevOps 流程/理念相契合。

参考资料

    什么是 Terraform 的基础设施即代码?
  • What is Infrastructure as Code (IaC? | RedHat

编程笔记 » Terraform 系列-什么是 IaC

赞同 (36) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽