【问题标题】:Terraform: order of creating array of resourcesTerraform:创建资源数组的顺序
【发布时间】: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


【解决方案1】:

使用terraform apply -parallelism=1 将并发操作数限制为一次 1。

【讨论】:

  • 我希望能够确定哪个先启动
猜你喜欢
  • 2021-05-15
  • 2020-11-18
  • 2019-05-19
  • 1970-01-01
  • 2021-10-05
  • 2020-11-07
  • 2020-12-23
  • 2020-06-02
  • 2021-01-21
相关资源
最近更新 更多