Terraform 为区域列表声明多个提供程序
我有一个Terraform模块,用于管理AWS GuardDuty 在模块中,声明了一个资源。该资源不允许指定区域,尽管我需要为列表中的每个区域配置其中一个资源。使用的区域需要由提供程序声明,显然(?) 缺少似乎是问题的一部分,或者,至少,每个模块都有,如果存在的话,可能让我为每个区域声明一次整个模块 因此,我想知道,是否有可能为列表中的每个区域声明一个提供者Terraform 为区域列表声明多个提供程序,terraform,Terraform,我有一个Terraform模块,用于管理AWS GuardDuty 在模块中,声明了一个资源。该资源不允许指定区域,尽管我需要为列表中的每个区域配置其中一个资源。使用的区域需要由提供程序声明,显然(?) 缺少似乎是问题的一部分,或者,至少,每个模块都有,如果存在的话,可能让我为每个区域声明一次整个模块 因此,我想知道,是否有可能为列表中的每个区域声明一个提供者 或者,除了编写一个shell脚本包装器,或者不去做,还有没有其他我可能没有想到的干净的方法来解决这个问题?为了支持类似的过程,我找到了两
或者,除了编写一个shell脚本包装器,或者不去做,还有没有其他我可能没有想到的干净的方法来解决这个问题?为了支持类似的过程,我找到了两种解决这个问题的方法
.tfvars
文件资源
时,必须在资源上设置提供程序
属性,以便Terraform知道要针对哪个区域提供程序执行。此外,如果其中一个区域的提供程序无法初始化,可能是该区域已关闭,则整个脚本将不会运行,直到您删除它或该区域已备份
对于第二个选项,您可以为需要设置的资源编写Terraform,然后只需多次运行模块,每个区域.tfvars
文件一次
- prod-us-east-1.tfvars
- prod-us-west-1.tfvars
- prod-eu-west-2.tfvars
.tfvars
文件中,应该更易于管理
编辑:添加了一些示例.tfvars
prod-us-east-1.tfvars:
region = "us-east-1"
account_id = "0000000000"
tags = {
env = "prod"
}
dynamodb_read_capacity = 100
dynamodb_write_capacity = 50
region = "us-west-1"
account_id = "0000000000"
tags = {
env = "prod"
}
dynamodb_read_capacity = 100
dynamodb_write_capacity = 50
prod-us-west-1.tfvars:
region = "us-east-1"
account_id = "0000000000"
tags = {
env = "prod"
}
dynamodb_read_capacity = 100
dynamodb_write_capacity = 50
region = "us-west-1"
account_id = "0000000000"
tags = {
env = "prod"
}
dynamodb_read_capacity = 100
dynamodb_write_capacity = 50
我们根据环境和/或地区为服务或功能设置可能需要更改的变量。例如,在测试环境中,dynamodb的容量可能低于生产环境中的容量。您能否澄清tfvars文件中的预期内容?当然,答案中添加了示例