区块链网站|NFTS Terra(LUNC) terra form——在任何云上实现基础设施自动化

terra form——在任何云上实现基础设施自动化

广告位

terraform-在任何云上自动化基础架构

《开源精选》是我们在Github、Gitee等开源社区分享优质项目的专栏,包括技术、学习、实用和各种有趣的内容。本期推荐的Terraform可以在任何云上实现基础设施自动化。

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

Terraform要素基础设施是代码:使用高级配置语法来描述基础设施。这允许您像处理任何其他代码一样对数据中心的蓝图进行版本控制和处理。此外,基础设施可以共享和重用。执行计划:Terraform有一个计划步骤,它生成一个执行计划。执行计划显示了当您调用apply时Terraform将做什么。这可让您在Terraform操作基础设施时避免任何事故。资源映射:Terraform构建所有资源的映射,并并行创建和修改任何非依赖资源。因此,Terraform尽可能高效地构建基础设施,运营商可以深入了解其基础设施中的依赖关系。变更自动化:复杂的变更集可以应用到您的基础设施中,只需要最少的人工干预。通过上面提到的执行计划和资源图,你可以准确的知道Terraform会改变什么,改变的顺序是什么,从而避免了很多可能的人为错误。工作流程:

这是Terraform配置语言的文档。与Terraform CLI、Terraform Cloud、Terraform Enterprise的用户有关。Terraform的语言是其主要的用户界面。你用Terraform语言写的配置文件告诉Terraform要安装哪些插件,要创建哪些基础设施,要获取哪些数据。Terraform还允许您定义资源之间的依赖关系,并从单个配置块创建多个相似的资源。

Terraform语言的语法只包含几个基本元素:

资源' AWS _ VPC ' ' main ' { CIDR _ block=var . base _ CIDR _ block } block type ' block label ' ' block label ' { block body identifier=expression # argument }的示例

下面的例子描述了Amazon Web Services的简单网络拓扑,只是为了让你了解Terraform语言的整体结构和语法。使用由其他提供商定义的资源类型,可以为其他虚拟网络服务创建类似的配置,并且实际的网络配置通常包含此处未显示的其他元素。

terra form { required _ providers { AWS={ source=' hashi corp/AWS ' version=' ~ 1 . 0 . 4 ' } } } variable ' AWS _ region ' { } variable ' base _ CIDR _ block ' { description=' A/16 CIDR范围定义,例如10.1.0.0/16,VPC将使用' default=' 10 . 1 . 0 . 0/16 ' } variable ' avail ability _ zones ' { description='要在其中创建子网的可用性区域列表' type=list(string)}CIDR _ block=var . base _ CIDR _ block } resource ' AWS _ subnet ' ' az ' { #为每个给定的可用性区域创建一个子网。count=length(var . avail ability _ zones)#对于每个子网,使用一个指定的可用性区域。avail ability _ zone=var . avail ability _ zones[count . index]#通过引用aws_vpc.main对象,Terraform知道只有在创建vpc后才能创建子网#。vpc_id=aws_vpc.main.id #内置函数和运算符可用于#值的简单转换,如计算子网地址。这里,我们为每个子网创建一个/20前缀,为每个可用性分区使用连续的地址,例如10.1.16.0/20。CIDR _街区=CIDR子网(AWS _ VPC。主要的。CIDR _ block,4,count.index1)} Terraform会在每次运行时安装Terraform云和Terraform Enterprise安装提供商。Terraform CLI在初始化工作目录时会查找并安装提供程序。它可以自动从Terraform注册表下载提供程序,或者从本地镜像或缓存加载它们。如果使用永久工作目录,则每当配置发生更改时,都必须重新初始化提供程序。为了节省时间和带宽,Terraform CLI支持可选的插件缓存。您可以使用CLI配置文件plugin_cache_dir中的设置来启用缓存。工作目录内容

Terraform工作目录通常包含:

描述Terraform应管理的资源的Terraform配置。这种配置预计会随着时间的推移而改变。一个隐藏的。terraform目录,Terraform使用它来管理缓存的提供者插件和模块,记录当前活动的工作区,并记录最后已知的后端配置,以备下次运行时需要迁移状态。该目录由Terraform自动管理,并在初始化过程中创建。状态数据,如果配置使用默认的本地后端。这由terraform.tfstate文件中的Terraform(如果目录仅使用默认工作空间)或terraform.tfstate.d目录中的terraform管理(如果目录使用多个工作空间)。初始化

运行Terraform init命令来初始化包含Terraform配置的工作目录。初始化后,您将能够执行其他命令,如terraform plan和terraform apply。如果您尝试运行一个依赖于初始化的命令,而没有先初始化它,该命令将失败并显示一个错误,您需要运行init。初始化执行几个任务来准备目录,包括访问配置的后端中的状态、下载和安装提供者插件以及下载模块。在某些情况下(通常是从一个后端切换到另一个后端时),它可能会要求用户给予指导或确认。重新初始化

Terraform配置中的某些类型的更改可能需要重新初始化,然后才能继续正常操作。这包括对提供者要求、模块源代码或版本约束以及后端配置的更改。您可以通过再次运行目录terraform init来重新初始化它。事实上,你可以随时重新初始化;init命令是幂等的,如果不需要更改,它将不起作用。如果需要重新初始化,任何依赖于初始化的命令都将失败,并显示一个错误并告诉您。Terraform Registry发布Terraform Registry是一个交互式资源,用于发现与Terraform一起使用的各种集成(提供者)和配置包(模块)。Registry包括由HashiCorp、第三方供应商和我们的Terraform社区开发的解决方案。Registry的目标是提供管理任何基础设施API的插件、快速配置公共基础设施组件的预制模块,以及如何编写高质量Terraform代码的示例。

导航注册表

注册表为模块和提供者提供了许多不同的类别,以帮助导航大量的可用选项。选择提供商或模块卡以了解更多信息,将结果过滤到特定层,或使用注册表顶部的搜索字段来查找您要查找的内容。

用户帐户

任何对发布提供者或模块感兴趣的人都可以创建一个帐户,并用GitHub帐户登录Terraform Registry。单击登录按钮,然后按照登录提示进行操作。授权您的GitHub帐户并登录后,您可以直接从您管理的一个存储库中发布提供程序和模块。

用于Terraform的CDKTerraform云开发工具包(CDKTF)允许您使用熟悉的编程语言来定义和配置基础设施。这使您可以在不学习HashiCorp配置语言(HCL)的情况下访问整个Terraform生态系统,并允许您使用现有工具链的强大功能进行测试、依赖管理等。

我们目前支持TypeScript、Python、Java、C#和Go(实验性)。

Terraform的CDK是如何工作的?

Terraform的CDK使用AWS云开发工具包中的概念和库将您的代码转换为Terraform的基础架构配置文件。

总体而言,您将:

创建应用程序:使用内置或自定义模板以您选择的语言构建项目。定义基础结构:使用您选择的语言来定义您想要在一个或多个提供者上配置的基础结构。CDKTF自动从Terraform提供者和模块中提取模式,为您的应用程序生成必要的类。部署:使用cdktfCLI命令为基础设施配置Terraform,或者将您的代码合成到一个JSON配置文件中,其他人可以直接使用Terraform。什么时候使用CDK地形?

CDKTF提供了许多好处,但它并不是每个项目的正确选择。在下列情况下,您应该考虑使用CDKTF:

您有强烈的偏好或者需要使用过程语言来定义基础设施。您需要创建抽象来帮助管理复杂性。例如,您想要创建构造来对由多种资源和方便的方法组成的可重用基础设施模式进行建模。您可以轻松地自行排除故障,并且不需要商业支持。—结束—

开源协议:MPL-2.0许可证

开源地址:https://github.com/hashicorp/terraform

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/jzb/lunc/49552.html

作者: 我是创始人

上一篇
下一篇

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部