Terraform 新手村指南,萌新必读!
创始人
2024-05-30 19:28:24
0

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

使用代码来定义和管理基础设施及其配置,可以让开发者采用版本控制、测试和自动化部署等技术,这有助于避免各种应用问题产生,比如性能瓶颈、功能故障等。
 

Terraform 是一个被广泛使用的开源 IaC 工具,用户可以以声明式的方式来管理基础设施。借助 Terraform, 用户可以使用简单的配置语言管理多个不同云厂商的云资源,比如 AWS、Azure、GCP等。
 

本文将会介绍 Terraform 的基础,包括架构、工作原理、工作流程及最佳实践等方面的内容。
 

Terraform 架构

Terraform 是一款基于插件的工具,因此其有一个核心应用 Terraform,和上百个插件。核心应用提供了一个统一的层来管理 IaC 代码,并且它还会负责安装所需的插件,调用它们、管理状态等。另一方面,插件可以与基础设施平台和应用通信,如AWS、GCP、Grafana、Jenkins、GitLab等。其中一些插件由 Hashicorp 团队维护,另外的那些则是由第三方维护。每个人都可以编写并发布自己的插件,访问下方网站可以获取插件库:
https://registry.terraform.io/
 

 

Terraform 插件由两大主要类型:Provider 和 Provisioner。Provider 是通过 API 负责与实际基础设施或应用进行连接,并创建、修改和删除对象和资源。Provisioner 是负责连接已经配置好的基础设施并对其进行更改。例如,你可以使用 AWS Provider 来配置一个 EC2 实例,并在配置完成后远程执行 Provisioner 来在实例上执行某些命令行。(需要注意的是,Provisioner 通常不是最佳实践)
 

Terraform 核心概念

本节介绍一些 Terraform 中使用的核心概念/术语:
 

  • Variables:也被称为 input-variables(输入变量),它是 Terraform 模块使用的键值对,可以自定义。
  • Provider:一种插件类型,与 API 服务进行交互并访问相关资源。
  • Module:它是一个包含 Terraform 模板的文件夹,所有的配置都可以在这里定义。
  • State:它由 Terraform 管理的基础设施和相关配置的缓存信息组成。
  • Resources:它指一个或多个基础设施对象(计算实例、虚拟网络等)的块(block),这些对象用于配置和管理基础设施。
  • Data Source:它是由 provider 实现的,以返回外部对象的信息到 Terraform。
  • Output Values:这是 Terraform 模块的返回值,可以被其他配置使用。
  • Plan:这是指其中一个阶段,在这一阶段中会决定需要创建、更新或销毁什么,以便从基础设施的 real/current 状态转移到期望状态。
  • Apply:这一阶段会应用基础设施的更改 real/current 状态,以推动到期望状态。
     

Terraform 生命周期

Terraform 的生命周期由init、plan、apply和 destroy,4个阶段构成。
 

  • Terraform init 初始化工作目录,其中包括所有的配置文件。
  • Terraform plan 被用来创建执行计划以达到基础设施的期望状态。为了达到预期状态,会对配置文件进行更改。
  • Terraform apply 会对在 plan 阶段中定义的基础设施进行更改,从而使基础设施达到期望状态。
  • Terraform destroy 这一阶段用于删除所有的旧基础设施资源,这些资源在apply 阶段后被标记为污损(taint)。
     

Terraform 的工作原理

Terraform 可以让用户通过配置文件定义和管理整个基础设施和版本控制。这主要由 Terraform 架构中的两个主要组件来实现这一目标:Core 和 Provider。
 

Terraform Core 如何工作

要完成工作,Terraform core 需要使用2个输入源。第一个源将用户配置输入到 Terraform,并定义需要创建或配置什么资源。第二个输入源包括向Terraform提供的关于当前基础设施设置情况的数据。
 

Terraform 会获取这些输入信息并决定下一步应该如何进行。它采用用户指定的期望状态,并将其与当前状态进行对比,进而对架构进行配置以消除两种状态之间的差距。Terraform core 本质上是要计算出需要创建、更新或删除的内容,以便全面配置基础设施。
 

Terraform Provider 如何工作

第二个让 Terraform 运行的关键组件是 provider。常见的是云厂商,如 AWS 或 Azure,但其他基础设施或平台服务工具也可以。例如,Kubernetes 也是 Terraform 用的一个 provider。
 

Terraform 有上百个不同技术的 Provider 可供用户访问。例如,如果你正在使用 AWS,Terraform 可以访问 EC2 实例和在这一技术栈内的其他资源。接着,用户可以在不同层级上创建基础设施,比如在 Azure 上构建 Kubernetes。
 

这就是 Terraform 的工作原理:使用 Core 和 Provider 功能来快速完成应用程序和基础设施的设置,并且仅仅使用代码即可。
 

Terraform 工作流程

Terraform 的工作流程由以下3个步骤组成:
 

Step 1:写

在 Terraform 工作流程的第一步中,用户需要使用 Haschicorp Configuration Language (HCL)来将基础设施资源声明为代码。
 

Step 2:审核

接下来,Terraform 会展示其计划,它会根据用户设置的期望状态和现有资源的当前状态进行比较,来增加或移除资源。
 

Step 3:应用

最终,接受计划的更改,来增加或删除任何基础设施资源。然后基础设施将在 Terraform 的帮助下进行全面部署。
 

Terraform 最佳实践

  • 使用版本控制来管理 Terraform 配置
  • 在存储后端远程保存你的 Terraform 状态
  • 使用变量来确保你的配置更灵活和可复用
  • 使用模块来整理你的配置并将其共享给他人
  • 使用 terraform plan 命令来在应用之前预览更改
     

总结

Terraform 是 IaC 领域备受开发者青睐的开源工具,本文介绍了 Terraform 的基础,包括其工作流程、工作原理、核心概念以及架构解释,希望可以帮助你初步了解这个强大的工具。除了 Terraform 本身拥有强大的功能之外,还有非常完善的配套文档和教程,帮助开发者快速上手使用。
 

教程地址:
https://developer.hashicorp.com/terraform/tutorials

相关内容

热门资讯

写春草春花的诗句 写春草春花的诗句  春花秋草,只是催人老,总把千山眉黛扫。下文是有关写春草春花的诗句,欢迎大家阅读与...
陈文龙与文天祥的长乐缘 陈文龙与文天祥的长乐缘  陈文龙(1232年~1276年),福建兴化(今福建莆田)人,南宋抗元名将。...
七夕浪漫诗句 2023年七夕浪漫诗句(精选160句)  在日常学习、工作和生活中,大家一定都接触过一些使用较为普遍...
熊猫作文 熊猫作文  二年级状物作文题目:我最爱的荔枝  我最喜欢吃的.水果是荔枝,说起荔枝,我想起了一句古诗...
侯以雷诗 侯以雷诗汇总  【放纵】放纵己之新魄味,奇妙文韵炫新魂。或许诱得知己君,史河妙炫诱后人。  【蠢蠢欲...
赞美春天桃花的诗句 古诗词 赞美春天桃花的诗句 古诗词  春天是桃花盛开的季节,大家知道有哪些描写春天桃花的诗句吗?我们为大家整...
描述清晨的雨的诗句 描述清晨的雨的诗句  雨,像银灰色黏湿的蛛丝,织成一片轻柔的网,网住了整个秋的世界。天也是暗沉沉的,...
日斜江上孤帆影,草绿湖南万里... “日斜江上孤帆影,草绿湖南万里情。”出处 出自 唐代 刘长卿 的《别严士元》“日斜江上孤帆影,草绿湖...
雨字的诗句 雨字的诗句  1、《绝句》  唐·志南  古木阴中系短篷,杖藜扶我过桥东。  沾衣欲湿杏花雨,吹面不...
“归梦湖边,还迷镜中路”的意... “归梦湖边,还迷镜中路。”的词意:我回到那湖边的梦境,那湖水如镜,留连忘返,我又朦胧胧迷失了路径。【...
有关描写个人学识励志的古诗词... 1.如切如磋,如琢如磨------<<诗经.卫风.淇奥>> 2.学非探其花,要自拨其根------唐...
雪景诗句 雪景诗句  雪景诗句(精选100句)  在日复一日的.学习、工作或生活中,大家都经常接触到诗句吧,诗...
赞美海棠花的诗句 赞美海棠花的诗句(精选15首)  海棠花娇艳动人,花姿潇洒,花开似锦,是雅俗共赏的名花,被喻为“国艳...
《浪淘沙》教学反思 《浪淘沙》教学反思  我想,诗人写诗,往往是“言在此而意在彼”。要想现在的孩子知道几千年前诗人写诗的...
采菊东篱下全诗   采菊东篱下全诗  《饮酒》  作者:陶渊明  原文:  结庐在人境,而无车马喧。  问君何能尔,...
隔户杨柳弱袅袅,恰似十五女儿... “隔户杨柳弱袅袅,恰似十五女儿腰。”出处 出自 唐代 杜甫 的《绝句漫兴九首·其一》“隔户杨柳弱袅袅...
《读唐诗》歌词 《读唐诗》歌词  《读唐诗》,由魏德泮作词,谷建芬监制、作曲,张宏光编曲,收录于《新学堂歌》、《20...
陶渊明的田园诗   陶渊明的田园诗  1、《饮酒·其五》  结庐在人境,而无车马喧。  问君何能尔,心远地自偏。  ...
初入淮河四绝句 杨万里 初入淮河四绝句 杨万里  《初入淮河四绝句》是宋代诗人杨万里的组诗作品,运动了借景抒情的手法,表达对...
关于春节贴对联的古诗 关于春节贴对联的古诗  古诗的特点  古体诗是与近体诗相对而言的诗体。近体诗形成前,各种汉族诗歌体裁...