【发布时间】:2018-09-27 09:10:44
【问题描述】:
我在 terraform 中使用 count 方法定义了两个 ec2 实例。
resource "aws_instance" "example" {
count = "2"
ami = "ami-2d39803a"
instance_type = "t2.micro"
tags {
Name = "example-${count.index}"
}
}
如何强制它们一个接一个地启动?例如第二个实例应该在第一个实例完成时创建。
尝试 1:
depends_on = [aws_instance.example[0]]
结果:
错误:aws_instance.example:资源依赖于不存在的资源“aws_instance.example[0]”
尝试 2:
tags {
Name = "example-${count.index}"
Active = "${count.index == "1" ? "${aws_instance.example.1.arn}" : "this"}"
}
结果:
错误:aws_instance.example[0]:aws_instance.example[0]:不允许自我引用:“aws_instance.example.0.arn”
这让我相信插值是在实例配置完成后计算的,因此它看不到实际上不存在循环依赖。
有什么想法吗?
谢谢
【问题讨论】:
-
为什么它们需要按特定顺序而不是一次全部启动?
-
尝试实现蓝绿部署
-
这里没有足够的信息来说明您正在努力实现的目标,但它看起来不是正确的方法。如果您乐于将它们硬编码到单独的资源组中,您可以轻松地将第二组设置为依赖于第一个,但这有点难看,我觉得您最好使用 Terraform 和蓝/绿等其他模式作为具有
create_before_destroy的ASG。
标签: amazon-web-services terraform