紧跟上文:terraform简单的开始-安装和一些配置.先对照上一章文章的main.tf进行一下解读
上一篇中main.tf代码如下:
terraform {
required_providers {
tencentcloud = {
source = "tencentcloudstack/tencentcloud"
version = "1.81.25"
}
}
}
variable "region" {
description = "腾讯云地域"
type = string
default = "ap-shanghai"
}
variable "secret_id" {}
variable "secret_key" {}
# 设置腾讯云提供者
provider "tencentcloud" {
secret_id =var.secret_id
secret_key = var.secret_key
region = var.region
}
data "tencentcloud_availability_zones" "availability_zones" {}
output "zones" {
value = data.tencentcloud_availability_zones.availability_zones
}
下面解析以下代码部分:
下面这些代码其实是关于provider的声明:
terraform {
required_providers {
tencentcloud = {
source = "tencentcloudstack/tencentcloud"
version = "1.81.25"
}
}
}
# 设置腾讯云提供者
provider "tencentcloud" {
secret_id =var.secret_id
secret_key = var.secret_key
region = var.region
}
这段Terraform代码是用来声明Terraform配置文件中所需的提供者(provider)。在这个例子中,我们使用了Tencent Cloud(腾讯云)的提供者。
具体来说,代码中的terraform
块指示Terraform配置的开始,**required_providers**
块用于声明所需的提供者。在这里,我们声明了一个名为"tencentcloud"的提供者。
在**tencentcloud**
块内部,我们指定了提供者的相关信息:
**source**
字段指定提供者的源。在这里,我们使用了"tencentcloudstack/tencentcloud"
作为提供者的源,这是Tencent Cloud 官方维护的提供者。**version**
字段指定了所需的提供者版本。在这里,我们指定了版本号为"1.81.25"
,表示我们需要使用1.81.25版本的Tencent Cloud提供者。provide块**provide**
块这段代码是在Terraform中配置使用Tencent Cloud提供者(provider),并指定了一些必要的参数。
首先,provider
块用于配置Tencent Cloud提供者。在这里,我们使用了"tencentcloud"
作为提供者的名称,与前面声明的required_providers
块中的名称相对应。
在provider
块内部,我们指定了一些参数:**secret_id**
:这个参数是通过变量var.secret_id
获得的,它应该包含您的Tencent Cloud账号的SecretId。SecretId是一种访问密钥,用于对Tencent Cloud资源进行身份验证和授权。**secret_key**
:这个参数是通过变量var.secret_key
获得的,它应该包含您的Tencent Cloud账号的SecretKey。SecretKey是与SecretId关联的机密,用于对Tencent Cloud资源进行身份验证和授权。**region**
:这个参数是通过变量var.region
获得的,它指定了您希望使用的Tencent Cloud区域。Terraform将在指定的区域中创建和管理资源。通过这些参数配置,Terraform将使用提供的SecretId、SecretKey和区域信息来进行身份验证,并与Tencent Cloud API进行通信,以创建、更新或删除Tencent Cloud资源。
请注意,变量var.secret_id
、var.secret_key
和var.region
应该在Terraform配置文件中定义和赋值,以便在使用此提供者时提供正确的值。
通过这段代码,Terraform将会自动下载并加载所需的Tencent Cloud提供者,并使用指定的版本。这样,在Terraform配置文件中就可以使用Tencent Cloud提供者的资源和数据源来创建和管理腾讯云资源。
这里就定义了 region区域 已经腾讯云密钥:
variable "region" {
description = "腾讯云地域"
type = string
default = "ap-shanghai"
}
variable "secret_id" {}
variable "secret_key" {}
data块
用于从外部数据源获取信息。
output
块用于定义输出值,这些值可以在Terraform执行完毕后显示出来
data "tencentcloud_availability_zones" "availability_zones" {}
output "zones" {
value = data.tencentcloud_availability_zones.availability_zones
}
恩常用的块还有resource块 用户声明和配置terraform相关资源,后面会展开相关。
我是创建了一个credentials.tfvars文件,名称不重要。我是主要为了将密码跟main.tf分开截图方便....免得打马赛克!
secret_id = "xxxxxxxx"
secret_key = "xxxxxxxx"
目录下会生成.terraform的文件夹,其目录记录基本如下:.terraform/providers/registry.terraform.io/ 我的是腾讯云的,故下面的结构就是tencentcloudstack/tencentcloud/ 版本号
注意:由于为这里都使用了外部变量,故后面跟了-var-file=xxx!
执行 terraform plan命令:
terraform plan
terraform plan
命令用于生成并显示Terraform执行计划(execution plan)。
执行计划是Terraform根据当前配置文件和状态文件的内容,以及云服务商的API信息,计算出的一系列操作步骤。这些步骤描述了Terraform将如何创建、修改或删除资源以达到配置文件的期望状态。
当您运行terraform plan
时,Terraform会执行以下操作:
.tf
文件)和状态文件(如.tfstate
文件),并根据这些信息了解当前资源的状态、配置变化和依赖关系。terraform plan
只是生成计划,并不会实际应用变更。要应用计划并执行资源变更,请运行terraform apply
命令。
注意:以上文字使用chatgpt3.5生成!执行terraform apply 命令:
terraform apply -var-file=credentials.tfvars
terraform apply命令用于将Terraform的执行计划应用于云环境,并创建、修改或删除相应的资源。
当您运行terraform apply时,Terraform会执行以下操作:
通过运行terraform apply,您可以将配置文件中的变更应用到云环境,并确保云环境与配置文件的期望状态保持一致。请注意,应用变更可能会导致资源的创建、修改或删除,因此请谨慎操作,并在执行前仔细检查计划和确认提示。
apply 这里顺便讲一下terraform.tfstate 状态文件:
关于tfstate文件
terraform.tfstate
文件是Terraform使用的状态文件,用于跟踪和管理资源的状态。
Terraform在执行过程中会将资源的当前状态存储在.tfstate
文件中。这个文件记录了创建的资源、其属性的值,以及与其他资源之间的关系和依赖。它是一个JSON格式的文件,包含了资源的详细信息。
.tfstate
文件的作用包括:
terraform plan
)和应用(terraform apply
)过程中进行比较和更新。terraform destroy -var-file=credentials.tfvarsterraform apply
时,Terraform会读取状态文件中的信息,并根据配置文件中的定义和状态文件的对比,决定是否需要创建新的资源。这样可以避免重复创建已经存在的资源。.tfstate
文件通常与Terraform配置文件(如.tf
文件)位于同一目录中。在执行terraform init
时,Terraform会自动初始化和管理状态文件,根据配置中的backend
设置将其存储在本地文件系统或远程存储中(如AWS S3、Azure Blob Storage等)。
请注意,.tfstate
文件包含敏感信息(例如资源的密码、密钥等),因此需要妥善保护。建议不要直接手动修改或共享该文件,而是使用Terraform提供的命令和工具来管理和操作状态文件。terraform destroyterraform destroy 当你使用Terraform创建了基础设施和资源后,有时候你可能需要停止使用这些资源并将其清理掉。这就是使用terraform destroy
命令的情况。
terraform destroy
是Terraform命令行工具提供的一个命令,用于销毁通过Terraform创建的基础设施和资源。它会根据你的配置文件(通常是以.tf
为后缀的文件)中定义的内容,逆向执行创建资源的操作,将资源从目标环境中删除。
执行terraform destroy
会触发以下过程:
terraform destroy
是一个非常强大且具有破坏性的命令,它会删除你指定的所有资源,包括存储、虚拟机、数据库等。因此,在执行该命令之前,请确保你真的想要销毁这些资源,并且备份了任何重要的数据。一旦执行了terraform destroy
,很难恢复被销毁的资源,可能需要重新创建和配置。
为了避免意外销毁,你可以使用Terraform的工作空间(workspace)功能,将不同的环境隔离开来,并为每个环境创建独立的配置文件。这样,你可以在不同的工作空间中执行terraform destroy
,而不会影响其他环境的资源。
总而言之,terraform destroy
是一个用于销毁通过Terraform创建的基础设施和资源的命令,它能够确保资源的正确删除和清理,但在执行之前请务必谨慎考虑,并确保备份了重要的数据。
注: 文字都来自chatgpt。由于咱们这例子中并没有创建资源。所以基本忽略只是演示!其他有用的玩法:从Terraform基础概念——Provider看来的:多Provider示例个人觉得可以用一下。先简单记录一下。这一篇文章只是简单记录分析一下项目。接下来完整实现一下!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。