Terraform 系列 -Terraform 简介

简介: Terraform 系列 -Terraform 简介

前言

最近在使用 Terraform 来置备 OCI 的 Always Free Tier, 发现它非常好用。总结学习下:Terraform 的基础知识。

什么是 Terraform?

Terraform 是一种 基础架构即代码 (IaC) 工具,可让您安全高效地构建、更改云和本地资源并对其进行 版本控制

HashiCorp Terraform 是一种基础架构即代码工具,可让您在人类可读的配置文件中定义云和本地资源,您可以对这些文件进行版本控制、重用和共享。然后,您可以使用一致的工作流程在其整个生命周期内配置和管理所有基础设施。Terraform 可以管理计算、存储和网络资源等低级组件,以及 DNS 条目和 SaaS 功能等高级组件。

Terraform 的主要特点

  • 基础设施即代码(IaC):基础设施使用高级配置语法进行描述。这允许对数据中心的蓝图进行版本控制,并像对待任何其他代码一样对待它。此外,基础设施可以共享和重复使用。
  • 执行计划(Plan):Terraform 有一个“计划”步骤,它可以生成执行计划。执行计划显示了 Terraform 在您调用 apply 时将执行的操作。这可以让您在 Terraform 操作基础设施时避免任何意外。
  • 资源图(Resource Map):Terraform 构建所有资源的图,并并行化任何非依赖资源的创建和修改。正因为如此,Terraform 尽可能高效地构建基础设施,并且运营商可以深入了解其基础设施中的依赖关系。
  • 变更自动化:复杂的变更集可以以最少的人工交互应用于您的基础架构。有了前面提到的执行计划和资源图,您就可以确切地知道 Terraform 将更改什么以及更改的顺序,从而避免许多可能的人为错误。

Terraform 的功能

这里简单罗列一下,由于笔者水平所限,可能有遗漏,请帮忙补充:

  • IaC
  • 工作空间(WorkSpace): Workspace 允许相同的配置代码有一个以上的状态 (State) 文件。这意味着部署到多个环境时,不需要将配置代码复制粘贴到不同的文件夹。每个工作空间可以使用自己的变量定义文件来参数化环境。
  • 变量(Variable): 即用户提供的值,它们能够参数化 Terraform 模块 (modules), 而不必修改源代码。
  • 运行(Run)- 计划和应用(Plan & Apply)
  • 资源图
  • 供应商(Provider): Provider 是上游 API 的逻辑抽象。他们负责了解 API 交互和公开资源。如:AWS/Azure/GCP/Kubernetes/Aliyun/OCI Providers
  • 模块(Modules): 模块是 Terraform 配置的独立包,允许把相关资源组合到一起,创建出可复用的组件。要使用模块,你并不需要知道模块的工作方式,只需要知道如何设置输入和输出即可。对于提升软件抽象度和代码复用,模块是很有用的工具。类似于积木块或 Python 的 library.
  • 注册表(Registry): 发现为所有 Terraform 资源类型提供支持的 Terraform 提供程序,或查找用于快速部署通用基础结构配置的模块。类似于 Docker Registry 或 Python PypI.
  • 声明式编程: 表达计算逻辑(做什么), 但不描述控制流(怎么做). 其关注的是结果,而不是过程。
  • 云无关: 能够使用一组相同的工具和工作流,无缝运行在任意云平台上。Terraform 是云无关的,使用它能把基础设施部署到 AWS 与部署到 GCP、Azure 甚至私有云一样简单。不会被特定云供应商(如 AWS CloudFormation)所绑定,也不需要在每次改变云供应商时学习一种全新的技术。
  • 表达能力强且高度可扩展:通过使用条件语句、for 表达式、指令、模版文件、动态块、变量和许多内置函数,我们可以轻松地编写代码来实现自己的目的。Terraform 提供以下特性:
  • 115+ 个函数
  • 支持条件语句
  • 支持 for 循环
  • 支持多种类型:字符串、数字、列表、映射、布尔值、对象、复杂类型
  • 支持插件
  • 模块化
  • 等待条件
  • 模板(Template)
  • 动态块
  • 协同工作 :利用 Terraform 的 后端(Backend)、注册表、工作空间以及代码仓库可以做到与朋友、同事协同工作。
  • 生命周期管理:Create、Read、Update、Delete(or Destory)以及可以自定义生命周期的 create_before_destory prevent_destory ignore_changes 标志。
  • 测试: 可以通过 go test 配合 fixture 测试 Terraform 代码。
  • HCL: 人机友好的结构化配置语言,用于命令行工具。尽管旨在普遍使用,但它主要针对 devops 工具、服务器等。HCL 是专门为构建结构化配置格式而设计的语法和 API。试图在通用序列化格式(如 JSON)和围绕完整编程语言(如 Ruby)构建的配置格式之间取得折衷。
  • 安全和密钥管理: 通过和 HashiCorp(Terraform 母公司) Vault 的无缝集成实现对安全和密钥的管理。

Terraform 和竞品的比较

基于以上 Terraform 的主要功能和特点,我们将 Terraform 和 它的竞品 做一个初步比较:

📝免责声明

以下仅为笔者个人观点,由于眼界和知识所限,并不一定准确。仅供参考。

  • 相比 Ansible/Chef/Puppet/SaltStack 等 配置管理工具. 配置管理工具主要用途是在已经存在的机器上安装和管理软件。Terraform 不是配置管理工具,它的主要作用是置备资源。Terraform 专注于数据中心和相关服务的更高级别的抽象。另外,Ansible/Chef/Puppet/SaltStack 等主要是命令式的,Terraform 是声明式的。但是它们都有丰富的扩展和生态。
  • 相比 AWS CloudFormation/GCP Deployment Manager/Azure Resource Manager. Terraform 更好,它云无关,并且支持多个提供商和服务的组合和组合。另外 Terraform 还通过使用执行计划的概念将计划阶段与执行阶段分开,以确保它完全符合预期。
  • 相比 Pulumi. Pulumi 和 Terraform 最为类似,唯一的区别在于 Pulumi 不是声明式的。孰弱孰强各有优势。
  • 相比 CrossPlane, Terraform 在面向用户 / 开发人员侧的抽象能力比 CrossPlane 弱一些,另外在保障配置不漂移这方面也相比 CrossPlane 弱一些。但是 Terraform 的生态(供应商和模块)要比 CrossPlane 强的多得多。

总结

本文讨论了什么是 Terraform, 它的优势、特点、使用场景, 相对于其他 IaC 工具有哪些优缺点。

本篇基本上都是一些概念性的东西,还没有进入实战环节,敬请期待后续更新。

EOF

相关文章
|
Linux iOS开发 MacOS
typora下载和破解(仅供学习)
Typora 一款 Markdown 编辑器和阅读器 风格极简 / 多种主题 / 支持 macOS,Windows 及 Linux 实时预览 / 图片与文字 / 代码块 / 数学公式 / 图表 目录大纲 / 文件管理 / 导入与导出 ……
163514 11
typora下载和破解(仅供学习)
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
11523 1
|
存储 安全 Devops
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
9729 3
linux centos上安装python3.11.x详细完整教程
|
运维 持续交付 网络安全
自动化运维:Ansible与Terraform的比较
【8月更文挑战第16天】Ansible和Terraform都是自动化运维领域的重要工具,它们各自以其独特的功能和优势在市场中占据了一席之地。在选择使用哪个工具时,用户应根据自己的实际需求和应用场景进行综合考虑。如果主要关注系统配置管理和应用程序部署,那么Ansible可能是一个更好的选择;如果主要关注基础设施的自动化部署和管理,那么Terraform可能更适合您的需求。
1021 3
|
11月前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
6870 12
|
11月前
|
Prometheus 监控 Cloud Native
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
5315 2
|
Kubernetes Devops 数据中心
Terraform 系列 - 什么是 IaC?
Terraform 系列 - 什么是 IaC?
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
2063 8
|
存储 Kubernetes 应用服务中间件
Ingress-Nginx使用指南上篇
关于Ingress-Nginx在Kubernetes中的使用指南,涵盖了从基础安装到高级特性配置的详细步骤和实战案例。
4765 3
Ingress-Nginx使用指南上篇