【发布时间】:2021-05-22 20:59:23
【问题描述】:
我有一个用例,我需要两个 AWS 提供商来提供不同的资源。默认的aws 提供程序在主模块中配置,该模块使用另一个定义附加aws 提供程序的模块。
默认情况下,除非明确覆盖,否则我希望两个提供商都使用相同的 AWS 凭证。
我想我可以做这样的事情。在主模块中:
locals {
foo_cloud_access_key = aws.access_key
foo_cloud_secret_key = aws.secret_key
}
variable "foo_cloud_access_key" {
type = string
default = local.foo_cloud_access_key
}
variable "foo_cloud_secret_key" {
type = string
default = local.foo_cloud_secret_key
}
variables foo_cloud_secret_key 和 foo_cloud_access_key 会像这样传递给子模块:
module foobar {
...
foobar_access_key = var.foo_cloud_access_key
foobar_secret_key = var.foo_cloud_secret_key
...
}
module foobar 将在其中配置其附加变量,并提供以下变量:
provider "aws" {
alias = "foobar_aws"
access_key = var.foobar_access_key
secret_key = var.foobar_secret_key
}
当我运行 init terraform 时会吐出这个错误(对于两个变量):
Error: Variables not allowed
on variables.tf line 66, in variable "foo_cloud_access_key":
66: default = local.foo_cloud_access_key
Variables may not be used here.
是否有可能在terraform 中实现类似的目标,或者有其他方法可以解决这个问题吗?
【问题讨论】:
标签: terraform terraform-provider-aws