我正在尝试根据环境创建不同的规则
对于资源
资源"aws_lb_listener_rule">
如果环境 == 产品 然后 操作 { 类型 ="重定向">
redirect {
host = "${var.}"
path = "/path"
port = "443"
protocol = "HTTPS"
status_code = "HTTP_302"
}
还 操作 { 类型 ="固定响应">
fixed_response {
content_type = "path"
status_code = 503
message_body = "${data.template_file.xxx_html.rendered}"
}
}
我如何使用地形实现这样的事情?
terraform
中的一般方法是使用资源count
作为 if 语句来创建或不在该方案中创建资源。
仅当environment
变量设置为prod
时,才能将保存redirect
的aws_lb_listener_rule
资源的计数设置为1
值。
以下示例具有所需的效果。
resource "aws_lb_listener_rule" "production_redirect_listener" {
# Create this rule only if the environment variable is set to production
count = var.environment == "prod" ? 1 : 0
listener_arn = aws_lb_listener.arn
action {
type = "redirect"
redirect {
host = var.hostname
path = "/path"
port = "443"
protocol = "HTTPS"
status_code = "HTTP_302"
}
}
}
resource "aws_lb_listener_rule" "generic_fixed_response" {
# If the environment variable is set to production do NOT create this rule
count = var.environment == "prod" ? 0 : 1
listener_arn = aws_lb_listener.arn
action {
type = "fixed-response"
fixed_response {
content_type = "path"
status_code = 503
message_body = data.template_file.xxx_html.rendered
}
}
}