我在 Azure DevOps 中有一个发布管道以及关联的变量组。我正在尝试将该变量组中的变量注入到我的
terraform apply
作业中,但是,变量的值似乎没有被替换,因为作业实际上正在尝试注入变量的名称。请参阅下面我创建变量的位置:
这是我尝试注入变量的地方(这是通过作业的附加命令参数完成的):
-var "POTENTIUM_ENVIRONMENT=${POTENTIUM_ENVIRONMENT}"
然后在下面您可以看到我的 terraform 应用失败:
只是希望有人能指出一个简单的原因来解释为什么这里没有使用变量的值?
下面是由于上述错误而无法创建资源的示例:
resource "aws_lb" "internal_load_balancer" {
name = "${var.environment}-iALB"
internal = true
load_balancer_type = "application"
security_groups = var.ecs_security_group_ILB
subnets = var.subnets
tags = {
Name = "${var.environment}-iALB"
Environment = "${var.environment}"
}
}
resource "aws_alb_listener" "internal_listener" {
load_balancer_arn = aws_lb.internal_load_balancer.arn
port = "80"
protocol = "HTTP"
default_action {
type = "fixed-response"
fixed_response {
content_type = "text/plain"
message_body = "The page you are looking for does not exist."
status_code = "401"
}
}
}
问题的原因可能与您使用 Pipeline 变量的方式有关。
在 Azure DevOps Pipeline 中,您可以使用以下格式:
$(variablename)
来调用变量。
这是一个例子:
-var "POTENTIUM_ENVIRONMENT=$(POTENTIUM_ENVIRONMENT)"
更详细的信息,您可以参考这个文档:运行时表达式语法
需要这样传递 `"-var=POTENTIUM_ENVIRONMENT=$(POTENTIUM_ENVIRONMENT)"'