Terraform 系列-什么是 IaC?

terraform,系列,什么,iac · 浏览次数 : 140

小编点评

## IaC 的基本概念基础架构即代码 (Infrastructure as Code, IaC) 是指通过代码而不是手动流程/控制台点击来管理和配置基础架构的技术。 IaC 有两种实现方式: * **声明式**: 定义了系统的理想状态,包括需要的资源以及它们应该具有的任何属性,IaC 工具将自动配置它。 * **命令式**: 定义了实现所需配置所需的特定命令,然后需要以正确的顺序执行这些命令。 **一些值得注意的关键点**: * IaC 减少手动配置的工作量,提高效率和准确性。 * IaC 提供相同的环境、相同的资源、相同的配置,可以避免未记录的、临时的配置更改。 * IaC 可以帮助您的组织管理 IT 基础设施需求,同时提高一致性并减少错误和手动配置。 ## Terraform 是 IaC 领域事实上的领导者毋庸置疑的 Terraform 是 IaC 领域事实上的领导者,所有主流公有云,私有云,虚拟化,K8s, 容器都有在维护对应的 Terraform Provider 和 Modules。 ## IaC 的好处 * **降低成本**: 减少手动配置的工作量,提高效率和准确性。 * **提高部署速度**: 通过代码化基础架构管理,可以减少手动配置的等待时间。 * **提高基础设施一致性**: 通过代码化基础架构管理,可以确保基础设施在开发、测试和生产环境中保持一致。 * **提高基础设施管理**: 通过代码化基础架构管理,可以减少开发人员配置基础架构的工作量,提高开发效率。 ## 总结 IaC 是基础架构即代码 (Infrastructure as Code, IaC) 的核心思想,它可以帮助您管理和配置基础架构,提高开发效率,降低成本。

正文

系列文章

👉 Terraform 系列文章

前言

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

基本概念

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

这里有 2 个关键词:

  • Infrastructure
  • Code

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

使用 IaC,创建的配置文件包含了基础设施的 spec,这使得编辑和分发配置变得更加容易。IaC 还确保每次都提供相同的环境、相同的资源、相同的配置。通过编辑和记录配置的 spec,IaC 有助于避免未记录的、临时的配置更改(当然,前提是所有人都使用 IaC,而不是还会有人在控制台点击修改导致配置漂移)。

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

  • Route53
  • CloudFront
  • S3

IaC 的两种实现方式

有两种实现 IaC 的方法:声明式命令式

声明式方法定义了系统的理想状态,包括需要的资源以及它们应该具有的任何属性,IaC 工具将自动配置它。

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

声明式方法还保留系统对象当前状态的列表,这使得拆除基础架构更易于管理。

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

典型的就是 Ansible.

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

如 Terraform, 它更喜欢声明式的方法,但是它的 Provider、Modules、函数中仍然残留不少命令式的方法, 如:local-exec

IaC 的好处

IaC(特别是声明式的)是随着公有云而发展起来的。

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

借助云计算,基础设施组件的数量不断增加,每天都有更多的应用程序发布到生产环境中,并且基础设施需要能够频繁地启动、扩展和关闭。如果没有适当的 IaC 实践,管理当今基础设施的规模会变得越来越困难。

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

这, 就是 IaC 的必要性。

好处

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

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

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

所有主流公有云,私有云,虚拟化,K8s, 容器都有在维护对应的 Terraform Provider 和 Modules.

Terraform Providers

IaC 工具

IaC 工具有哪些?目前主流的有:

声明式:

命令式:

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

我觉得主要有以下原因:

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

为什么 IaC 对 DevOps 很重要?

IaC 是实施 DevOps 实践和 CI/CD 的重要组成部分。DevOps 和 CI/CD 主要是应用和组件层面的, 而 IaC 消除了开发人员的大部分配置工作,开发人员可以执行脚本让他们的基础设施准备就绪。

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

IaC 帮助您协调开发和运维,因为两个团队可以在代码仓库中看到基础架构全貌。

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

DevOps 最佳实践也适用于 IaC 中的基础架构。基础设施可以通过与应用程序在软件开发期间相同的 CI/CD 管道,对基础设施代码应用相同的测试和版本控制。将 IaC 的 modules 代码也引入 DevOps 理念,快速测试,快速迭代。

总结

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

IaC 有声明式和命令式两种实现方式,现在更主流的是声明式的。

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

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

参考资料

与Terraform 系列-什么是 IaC?相似的内容:

Terraform 系列-什么是 IaC?

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

Terraform 系列-Terraform 简介

系列文章 👉 Terraform 系列文章 前言 最近在使用 Terraform 来置备 OCI 的 Always Free Tier, 发现它非常好用。总结学习下:Terraform 的基础知识。 什么是 Terraform? Terraform 是一种基础架构即代码(IaC)工具,可让您安全高

Terraform 系列-Terraform 项目的典型文件布局

系列文章 👉 Terraform 系列文章 典型文件布局 - modules/ - services/ - webserver-cluster/ - examples/ - main.tf - outputs.tf - vars.tf - user-data.sh - README.md - [

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?

系列文章 👉 Terraform 系列文章 前言 最近在使用 Terraform Cloud 来置备 OCI 的 Always Free Tier, 发现它非常好用,相比 Terraform OSS, 用起来省心多了。 也借此总结学习下:Terraform Cloud 比 Terraform OS

Terraform 系列-使用 for-each 对本地 json 进行迭代

## 系列文章 * [Terraform 系列文章](https://ewhisper.cn/tags/Terraform/) * [Grafana 系列文章](https://ewhisper.cn/tags/Grafana/) ## 概述 前文 [Grafana 系列 - Grafana Ter

Terraform 系列-批量创建资源时如何根据某个字段判断是否创建

这几天碰到一个情况, 使用 Terraform 批量创建日志数据源时, 有的数据源类型是 ElasticSearch, 有些是 Opensearch. 那么, 如何根据某个字段(如:`es_type`)判断是否创建?

Grafana系列-GaC-1-Grafana即代码的几种实现方式

## 系列文章 * [Grafana 系列文章](https://ewhisper.cn/tags/Grafana/) * [Terraform 系列文章](https://ewhisper.cn/tags/Terraform/) ## 概述 GaC(Grafana as Code, Grafana

Grafana 系列-GaC-2-Grafana Terraform Provider 基础

本文为系列文章-Grafana GaC(Grafana 即代码) 的第二篇 - Grafana Terraform Provider 基础。

Terraform 新手村指南,萌新必读!

基础设施即代码(IaC)是指使用代码和软件开发技术来配置和管理基础设施的实践。IaC 背后的逻辑是尽量消除手动配置基础设施和资源的需求,比如服务器、负载均衡以及数据库等。由于基础设施是整个软件开发流程的一个组成部分,并且与应用交付更紧密地联系在一起,因此让基础设施的更改更容易交付十分重要。 使用代码

Terraform 改善基础架构的十个最佳实践

Terraform 是一种非常流行的开源 IaC(基础设施即代码)工具,用于定义和提供完整的基础设施。Terraform 于 2014 年推出,其采用率已在全球范围内快速增长,越来越多的开发人员正在学习 Terraform 并尝试在其组织中部署基础设施。 如果您已经开始使用 Terraform,则必