Terraform——强大且灵活的 IaC 工具|平台工具链系列05

2024-03-14 18:50

本文主要是介绍Terraform——强大且灵活的 IaC 工具|平台工具链系列05,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Terraform 是由 HashiCorp 开发的开源基础设施即代码(IaC)工具。它允许用户以代码的方式定义和管理基础设施,这样就可以使用代码创建、修改和删除基础设施资源,例如虚拟机、存储账户和网络。Terraform 使用 HashiCorp 配置语言(HCL)的声明性语言来定义基础设施资源,易于阅读和学习,适用于开发人员和运维团队。同时,Terraform 还支持其他配置语言,如 JSON 和 YAML。

 

Terraform 作为一个成熟的开源项目,拥有庞大的用户群体和活跃的社区,在 GitHub 上有接近 40k 星星🌟。

 

01 Terraform 的关键特征

随着越来越多的企业使用云计算和实施自动化,使用可扩展、使其成为在可扩展、高效和一致的方式下管理基础设施变得越来越重要。Terraform 的关键特征在简化基础设施配置和管理方面发挥了关键作用。

 

基础设施即代码(IaC)

Terraform 的核心功能之一是支持基础设施即代码。使用 Terraform,用户就能够使用可读的配置文件来定义和管理基础设施,并可以进行版本控制、自动化和文档化基础设施设置,更容易与团队成员合作,并确保在不同环境中保持一致性。同时,Terraform 使用 HashiCorp 配置语言(HCL),简化了配置文件的编写,使 Terraform 对开发人员和运维团队都更易访问。

 

多云支持

Terraform 可以管理各种云提供商的资源。无论是在使用亚马逊云服务(AWS)、微软Azure、Google 云平台(GCP)或其他云提供商,Terraform 提供了一致的基础设施配置方法,消除了为每个平台学习不同的工具和语言的需求。

 

Execution Plan

Terraform 的执行计划(execution plan)对于安全地管理基础设施至关重要。该计划描述了 Terraform 将做什么,并在开始任何基础设施更改之前请求批准。通过此步骤,用户可以在 Terraform 对基础设施执行任何操作(包括创建、更新或删除基础设施)之前查看更改,防止意外和潜在不安全的更改。

 

模块化设计

Terraform 的模块化设计促进了代码的可重用性和可维护性。用户可以创建和共享模块以抽象和简化基础设施组件。这种模块化方法简化了大型和复杂基础设施的管理,提高了一致性,并使扩展基础设施变得更加容易。

 

状态管理

Terraform 维护状态文件,记录基础设施的当前状态。这个状态文件对于跟踪更改非常重要,用来确保期望的基础设施与实际基础设施相匹配。Terraform 自动处理状态管理,提供了一种可靠的方式来跟踪、审查和更新基础设施配置。

 

丰富的插件生态系统

Terraform 的插件生态系统扩展了其功能,可以与各种服务和提供商一起使用。无论是需要集成数据库、DNS 服务、监控工具还是自定义内部解决方案,用户都可以找到插件或创建自己的插件来扩展 Terraform 的功能。

 

强大的社区支持

Terraform 社区庞大且活跃。用户可以访问丰富的资源,包括文档、论坛和教程。在这里,用户可以寻求帮助、分享经验,并在使用 Terrafom 时找到解决常见问题和挑战的解决方案,或与其他用户进行交流讨论。

 

02 快速上手 Terraform

Terraform 提供成熟且完善的入门/教程。用户可以根据设备和需求来选择相应的教程快速上手 Terraform。

 

安装 Terraform

安装 Terraform 的最简便方式就是使用操作系统的包管理器。访问 Terraform 官方文档(https://developer.hashicorp.com/terraform/tutorials/aws-get-started)查看各个操作系统上的安装说明。

 

要检查一切是否正常,请运行terraform 命令,这里还罗列了一些其他实用命令:

 

$ terraform
Usage: terraform [global options] <subcommand> [args]The available commands for execution are listed below.
The primary workflow commands are given first, followed by
less common or more advanced commands.Main commands:init          Prepare your working directory for other commandsvalidate      Check whether the configuration is validplan          Show changes required by the current configurationapply         Create or update infrastructuredestroy       Destroy previously-created infrastructure

 

AWS CLI

这里我们将在 AWS 上使用 Terraform 来配置基础设施,因此需要安装 AWS CLI。Terraform 使用 AWS CLI 进行 API 调用来执行预置任务。登录 AWS Web 控制台为 Terraform 创建用户,按照下方进行选择。

 
在这里插入图片描述
 

现在为该用户提供管理角色,建议在处理项目时遵循最小权限原则。

 
在这里插入图片描述
 

成功创建用户后,记得记录访问密钥 ID 和秘密访问密钥。

 
在这里插入图片描述

 

我们需要在刚刚安装的 AWS CLI 中配置这些凭证。打开终端并运行 aws configure命令来配置默认凭据。我已将该区域保留为默认值,因为我使用的是相同的区域。如果需要,请选择您选择的区域。

 

sumeetninawe@Sumeets-MacBook-Pro tf-tuts % aws configure
AWS Access Key ID [****************PYVK]: ****PYVK
AWS Secret Access Key [****************duMt]: ****duMt
Default region name [eu-central-1]: 
Default output format [None]: 
sumeetninawe@Sumeets-MacBook-Pro tf-tuts %

 

至此,我们已成功设置环境准备开始使用 Terraform 和 AWS。

 

注意:如果您硬编码凭证或使用其他方法访问 AWS,Terraform 无需 AWC CLI 即可进行 API 调用。

 

Terraform Provider

Terraform 在其应用程序架构中实现了模块化方法。我们下载的 Terraform 二进制文件是执行核心 Terraform 功能所需的核心模块。任何不涉及调用任何云提供商 API 的操作或 CLI 命令都是该二进制文件的核心功能。

 

为了与云提供商(在我们的示例中为 AWS)合作,Terraform 实例化了相应的模块。它将二进制文件下载到项目的根目录中。我们指定 Terraform 使用特定版本的AWS provider,以便 Terraform 项目可以配置 AWS 资源。

 

现在我们来创建 Terraform 项目。在系统中创建一个目录,然后在您选择的 IDE 中打开该路径。所有 Terraform 代码都会进入 .tf 在此目录的根目录中创建的文件中。创建第一个名 provider.tf 为此空目录的文件并编写提供程序块,如下所示。

 

terraform {required_providers {aws = {source  = "hashicorp/aws"version = "~> 4.19.0"}}
}

 

如前所述,Terraform 使用 HCL 语法。一种声明性配置语言,可帮助我们声明要使用 Terraform 配置的云资源。在 provider.tf 文件中,我们指定了一个 terraform block,在其中声明了另一个 block 代表 required_providers

 

required_providers包含一个 attribute aws,具有几个属性的对象被分配到该属性。这些属性定义了AWS provider 的 source 和需求的 version。特定于提供商的文档保存在 registry 中。要检查可用提供程序的最新版本并使用 AWS 配置各种类型的资源,请参阅 Terraform registry 官方文档(https://registry.terraform.io/)。

 

上面的代码指示 Terraform 使用版本 4.19.0 初始化 AWS provider。保存 provider.tf 文件。现在在根目录中运行terraform init命令并观察如下输出以初始化 Terraform 项目:

 

sumeetninawe@Sumeets-MacBook-Pro tf-tuts % terraform initInitializing the backend...Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 4.19.0"...
- Installing hashicorp/aws v4.19.0...
- Installed hashicorp/aws v4.19.0 (signed by HashiCorp)Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.Terraform has been successfully initialized!You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
sumeetninawe@Sumeets-MacBook-Pro tf-tuts %

 

如我们所见,Terraform 已成功初始化所需版本的 AWS provider。如果我们查看根目录,就会发现它包含以下内容。

 
在这里插入图片描述

 

除了provider.tf 和 README.md 文件之外,我们还有.terraform.lock.hcl` 文件和一个名为.terraform的子目录。这里的锁定文件用于管理下载的模块二进制文件的校验。子目录用来下载 AWS provider 插件二进制文件。

 

如需了解更多 Terraform 上手教程,可参考官方文档(https://developer.hashicorp.com/terraform/docs)。

这篇关于Terraform——强大且灵活的 IaC 工具|平台工具链系列05的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809379

相关文章

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

详解Python中通用工具类与异常处理

《详解Python中通用工具类与异常处理》在Python开发中,编写可重用的工具类和通用的异常处理机制是提高代码质量和开发效率的关键,本文将介绍如何将特定的异常类改写为更通用的ValidationEx... 目录1. 通用异常类:ValidationException2. 通用工具类:Utils3. 示例文

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听