Terraform files explanation

aws.tf

这个文件指定了Terraform的版本要求、AWS区域和配置文件来自变量,以及从本地文件获取AWS凭证(如果存在)。

查看aws.tf文件的内容 - 这个文件向Terraform指定:

  • 应该使用的Terraform版本 required_version = “~> 1.4.2”
  • AWS、null和external “提供程序"的来源以及要使用的版本。
  • 对于AWS提供程序本身,要使用哪个区域以及从哪里获取AWS登录凭证。

rand.tf

这个文件生成一个随机ID,在整个构建过程中使用。

vars-dynamodb.tf

这个文件定义了一些变量,用于7个DynamoDB表的值。 我们使用7个表来帮助锁定用于基础设施构建不同阶段/部分的7个状态文件,以及构建中7个阶段的字符串映射。

vars-main.tf

这个文件中设置了一些其他的一般变量:区域、默认的AWS配置文件名称、EKS集群名称。

kms.tf

这个文件创建了一个KMS密钥,用于加密Terraform创建的各种资源。

dynamodb-tables.tf

这个文件指定Terraform应该创建五个DynamoDB表,用于保存访问我们稍后在S3存储桶中创建的Terraform状态文件的锁。注意depends_on语句,确保在创建DynamoDB表之前先创建S3存储桶。

s3-bucket.tf

这个文件创建了一个S3存储桶和各种存储桶选项。这个存储桶用于存储Terraform状态文件。

null_resource.tf

null_resource类型允许我们在基础设施构建过程中运行本地(或远程)命令。这个资源包含一个depends_on语句,有助于序列化脚本调用并防止任何竞争条件(sleep 6),以确保在使用之前正确创建资源。

这个null_resource然后在适当的时候调用gen-backend.sh脚本。

gen-backend.sh

这个脚本生成了这些Terraform文件,供我们EKS基础设施的其他7个部分使用:

  • generated/backend-{section}.tf (对于每个部分,这都定义了我们的Terraform状态文件和DynamoDB锁定表的位置)
  • generated/remote-{section}.tf (这允许我们访问其他部分的输出变量,有助于确保7个独立的基础设施构建任务可以执行)

ssm-params.tf

这是构建的关键步骤,因为关键变量被存储在SSM参数存储中,前缀为”/workshop/tf-eks”。