Terraform 一种用于安全高效地构建、更改和版本控制的工具

Terraform 一种用于安全高效地构建、更改和版本控制的工具

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

本期推荐的Terraform 是一种用于安全高效地构建、更改和版本控制基础架构的工具。

Terraform 一种用于安全高效地构建、更改和版本控制的工具

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

Terraform 主要特点

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

Terraform 是如何工作的?

Terraform 通过其应用程序编程接口 (API) 在云平台和其他服务上创建和管理资源。提供者使 Terraform 能够通过可访问的 API 与几乎任何平台或服务一起工作。

Terraform 一种用于安全高效地构建、更改和版本控制的工具

核心 Terraform 工作流程包括三个阶段:

  • 编写:您定义资源,这些资源可能跨越多个云提供商和服务。例如,您可以创建配置以在具有安全组和负载均衡器的 Virtual Private Cloud (VPC) 网络中的虚拟机上部署应用程序。
  • 计划: Terraform 创建一个执行计划,描述它将根据现有基础架构和您的配置创建、更新或销毁的基础架构。
  • 应用:在批准后,Terraform 会按照正确的顺序执行建议的操作,并尊重任何资源依赖关系。例如,如果您更新 VPC 的属性并更改该 VPC 中的虚拟机数量,Terraform 将在扩展虚拟机之前重新创建 VPC。
Terraform 一种用于安全高效地构建、更改和版本控制的工具

开始使用

安装 Terraform

要安装 Terraform,请找到适合您系统的软件包并将其下载为 zip 存档。

下载 Terraform 后,解压缩包。Terraform 作为一个名为terraform. 包中的任何其他文件都可以安全地删除,Terraform 仍然可以运行。

最后,确保terraform二进制文件在您的PATH. 此过程将因您的操作系统而异。

打印以冒号分隔的位置列表PATH。

echo $PATH

将 Terraform 二进制文件移动到列出的位置之一。此命令假定二进制文件当前位于您的下载文件夹中并且您的PATH包含/usr/local/bin,但如果您的位置不同,您可以自定义它。

mv ~/Downloads/terraform /usr/local/bin/

验证安装

通过打开一个新的终端会话并列出 Terraform 的可用子命令来验证安装是否有效。

$ terraform -help
Usage: terraform [-version] [-help] <command> [args]

The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.
##...

添加任何子命令以terraform -help了解有关其功能和可用选项的更多信息。

terraform -help plan

启用选项卡完成

如果您使用 Bash 或 Zsh,则可以为 Terraform 命令启用制表符补全。要启用自动完成,首先确保您选择的 shell 存在配置文件。

touch ~/.bashrc

然后安装自动完成包。

terraform -install-autocomplete

安装自动完成支持后,您将需要重新启动 shell。

快速入门教程

在本地计算机上安装 Terraform 和 Docker 后,启动 Docker Desktop。

open -a Docker

创建一个名为
learn-terraform-docker-container

mkdir learn-terraform-docker-container

打开

cd learn-terraform-docker-container

将以下 Terraform 配置粘贴到文件中并将其命名为main.tf.

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 2.13.0"
    }
  }
}

provider "docker" {}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.latest
  name  = "tutorial"
  ports {
    internal = 80
    external = 8000
  }
}

初始化项目,该项目下载一个允许 Terraform 与 Docker 交互的插件。

terraform init

使用apply. 当 Terraform 要求您确认类型yes并按ENTER。

terraform apply

通过在 Web 浏览器中访问localhost:8000docker ps或运行以查看容器来验证 NGINX 容器的存在。

构建基础设施

先决条件

要遵循本教程,您将需要:

  • 已安装Terraform CLI (1.2.0+)。
  • 已安装AWS CLI 。
  • 允许您创建资源的AWS 账户和关联凭证。

要使用您的 IAM 凭证对 Terraform AWS 提供商进行身份验证,请设置AWS_ACCESS_KEY_ID环境变量。

export AWS_ACCESS_KEY_ID=

现在,设置您的密钥。

export AWS_SECRET_ACCESS_KEY=

写配置

在 Terraform 中用于描述基础设施的文件集称为 Terraform配置。您将编写您的第一个配置来定义单个 AWS EC2 实例。

每个 Terraform 配置必须位于其自己的工作目录中。为您的配置创建一个目录。

mkdir learn-terraform-aws-instance

切换到目录。

cd learn-terraform-aws-instance

创建一个文件来定义您的基础架构。

touch main.tf

在文本编辑器中打开main.tf,粘贴下面的配置,然后保存文件。

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

  required_version = ">= 1.2.0"
}

provider "aws" {
  region  = "us-west-2"
}

resource "aws_instance" "app_server" {
  ami           = "ami-830c94e3"
  instance_type = "t2.micro"

  tags = {
    Name = "ExampleAppServerInstance"
  }
}

使用输出查询数据

初始配置

遵循此集合中的先前教程后,您将拥有一个
learn-terraform-aws-instance使用以下配置命名的目录。

# main.tf

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

  required_version = ">= 1.2.0"
}

provider "aws" {
  region  = "us-west-2"
}

resource "aws_instance" "app_server" {
  ami           = "ami-08d70e59c07c61a3a"
  instance_type = "t2.micro"

  tags = {
    Name = var.instance_name
  }
}

# variables.tf

variable "instance_name" {
  description = "Value of the Name tag for the EC2 instance"
  type        = string
  default     = "ExampleAppServerInstance"
}

确保您的配置与此匹配,并且您已在
learn-terraform-aws-instance目录中初始化配置。

terraform init

在继续本教程之前应用配置。使用 响应确认提示yes。

terraform apply

存储远程状态

设置 Terraform 云

修改main.tf以将cloud块添加到您的 Terraform 配置,并替换<ORG_NAME>为您的组织名称

terraform {
  cloud {
    organization = "<ORG_NAME>"
    workspaces {
      name = "Example-Workspace"
    }
  }

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

登录 Terraform 云

接下来,使用终端中的 Terraform CLI 登录到您的 Terraform Cloud 帐户。

$ terraform login
Terraform will request an API token for app.terraform.io using your browser.

If login is successful, Terraform will store the token in plain text in
the following file for use by subsequent commands:
    /Users/<USER>/.terraform.d/credentials.tfrc.json

Do you want to proceed?
  Only 'yes' will be accepted to confirm.

  Enter a value:

使用 a 确认yes并按照将自动打开的浏览器窗口中的工作流程进行操作。出现提示时,您需要将生成的 API 密钥粘贴到终端中。

设置工作区变量

该terraform init步骤Example-Workspace在您的 Terraform Cloud 组织中创建了工作区。您必须使用您的 AWS 凭证配置您的工作区以对 AWS 提供商进行身份验证。

导航到
Example-WorkspaceTerraform Cloud 中的工作区,然后选择“变量”选项卡。在“环境变量”部分添加您的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY ,确保将它们标记为“敏感”。

Terraform 一种用于安全高效地构建、更改和版本控制的工具

—END—

开源协议:MPL-2.0 license

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

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

七爪网 免费源码 Terraform 一种用于安全高效地构建、更改和版本控制的工具 https://www.7claw.com/47048.html

分享免费的开源源码

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

相关文章

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

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