Amazon web services 将参数传递给dev和prod集群中的模块
嗨,我应该如何将变量只传递给一个环境 我定义了一个日志参数,我只想把这个变量传递给我的prod redshift,而不是dev redshift。dev redshift集群不应定义日志记录参数 我被困在如何在模块内部传递的问题上,我为prod和dev redshift集群提供了单独的模块Amazon web services 将参数传递给dev和prod集群中的模块,amazon-web-services,amazon-s3,terraform,Amazon Web Services,Amazon S3,Terraform,嗨,我应该如何将变量只传递给一个环境 我定义了一个日志参数,我只想把这个变量传递给我的prod redshift,而不是dev redshift。dev redshift集群不应定义日志记录参数 我被困在如何在模块内部传递的问题上,我为prod和dev redshift集群提供了单独的模块 variable "logging" { target_bucket= "xxxx" } resource "aws_s3_bucket" "log_bucket" { bucket = "$
variable "logging" {
target_bucket= "xxxx"
}
resource "aws_s3_bucket" "log_bucket" {
bucket = "${var.bucket}-${var.env}"
logging = ["${var.logging}"]
module "redshift-dev" {
source = "../modules/xxxx"
env = "dev"
region = "us-east-1"
logging = {}
module "redshift-prod" {
source = "../modules/xxxx"
env = "prod"
region = "us-east-1"
logging = {
target_bucket= "xxxx"
}
似乎您误解了如何使用terraform模块管理不同的环境 不要编写两个模块来管理dev/prod环境,一个就足够了
variable "logging" {
target_bucket= "xxxx-${var.env}"
}
resource "aws_s3_bucket" "log_bucket" {
bucket = "${var.bucket}-${var.env}"
logging = ["${var.logging}"]
module "redshift" {
source = "../modules/xxxx"
env = "${var.env}"
region = "us-east-1"
logging = ${var.env == "prod" ? {} : { target_bucket= "xxxx" } }"
}
在这种情况下,管理不同环境的不同设置的关键点是使用terraform
您能否同时显示您的模块定义?最好将日志参数设置为可选参数(
default=”“
),并在模块中处理它。这将为模块创建一个更好的接口,但是很难正确地推荐它,因为他们还没有展示他们的模块代码。
The conditional syntax is the well-known ternary operation:
CONDITION ? TRUEVAL : FALSEVAL