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

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

2022-10-19 0 996
资源编号 46115 最近更新 2022-10-19
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的terraform-可以在任何云上自动化基础架构。

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

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

Terraform特征

  • 基础设施即代码:使用高级配置语法描述基础设施。这允许您对数据中心的蓝图进行版本控制和处理,就像您处理任何其他代码一样。此外,基础设施可以共享和重用。
  • 执行计划:Terraform 有一个“计划”步骤,它会生成一个执行计划。执行计划显示了当您调用 apply 时 Terraform 将执行的操作。这可以让您在 Terraform 操作基础设施时避免任何意外。
  • 资源图: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 语言的整体结构和语法。可以使用其他提供商定义的资源类型为其他虚拟网络服务创建类似的配置,并且实际的网络配置通常会包含此处未显示的其他元素。

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

variable "aws_region" {}

variable "base_cidr_block" {
  description = "A /16 CIDR range definition, such as 10.1.0.0/16, that the VPC will use"
  default = "10.1.0.0/16"
}

variable "availability_zones" {
  description = "A list of availability zones in which to create subnets"
  type = list(string)
}

provider "aws" {
  region = var.aws_region
}

resource "aws_vpc" "main" {
  # Referencing the base_cidr_block variable allows the network address
  # to be changed without modifying the configuration.
  cidr_block = var.base_cidr_block
}

resource "aws_subnet" "az" {
  # Create one subnet for each given availability zone.
  count = length(var.availability_zones)

  # For each subnet, use one of the specified availability zones.
  availability_zone = var.availability_zones[count.index]

  # By referencing the aws_vpc.main object, Terraform knows that the subnet
  # must be created only after the VPC is created.
  vpc_id = aws_vpc.main.id

  # Built-in functions and operators can be used for simple transformations of
  # values, such as computing a subnet address. Here we create a /20 prefix for
  # each subnet, using consecutive addresses for each availability zone,
  # such as 10.1.16.0/20 .
  cidr_block = cidrsubnet(aws_vpc.main.cidr_block, 4, count.index+1)
}

Terraform安装

  • Terraform Cloud 和 Terraform Enterprise 安装提供程序作为每次运行的一部分。
  • Terraform CLI 在 初始化工作目录时查找并安装提供程序。它可以从 Terraform 注册表自动下载提供程序,或从本地镜像或缓存加载它们。如果您使用的是持久工作目录,则无论何时更改配置的提供者都必须重新初始化。
  • 为了节省时间和带宽,Terraform CLI 支持可选的插件缓存。您可以使用CLI 配置文件plugin_cache_dir中的设置 启用缓存。

工作目录内容

Terraform 工作目录通常包含:

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

初始化

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

重新初始化

  • Terraform 配置的某些类型的更改可能需要重新初始化,然后才能继续正常操作。这包括对提供者要求、模块源或版本约束以及后端配置的更改。
  • 您可以通过再次运行来重新初始化目录terraform init。事实上,您可以随时重新初始化;init 命令是幂等的,如果不需要更改,它将不起作用。
  • 如果需要重新初始化,任何依赖于初始化的命令都将失败并显示错误并告诉您。

Terraform 注册表发布

Terraform 注册表是一个交互式资源,用于发现与 Terraform 一起使用的各种集成(提供程序)和配置包(模块)。Registry 包括由 HashiCorp、第三方供应商和我们的 Terraform 社区开发的解决方案。我们对 Registry 的目标是提供插件来管理任何基础设施 API、预制模块以快速配置通用基础设施组件,以及如何编写优质 Terraform 代码的示例。

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

导航注册表

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

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

用户帐号

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

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

用于 Terraform 的 CDK

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

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

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

Terraform 的 CDK 是如何工作的?

适用于 Terraform 的 CDK 利用AWS 云开发工具包中的概念和库将您的代码转换为 Terraform 的基础设施配置文件。

在高层次上,您将:

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

何时将 CDK 用于 Terraform

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

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

—END—

开源协议:MPL-2.0 license

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 terraform-在任何云上自动化基础架构 https://www.7claw.com/46115.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务