小编Ale*_*kin的帖子

terraform 如何使用 time_sleep 资源正确实现延迟

terraform 创建的资源在创建后会消耗创建它的集群上的 CPU/RAM,因此在创建同一集群上的下一个资源之前需要某种延迟。

作为实现此目标的一个选项,决定使用 time_sleep terraform 资源在资源创建之前实现一些延迟。

还决定使用-parallelism=1,以便一一创建资源。

假设我们有一个模块(尽可能简单):

模块测试,main.tf

resource "time_sleep" "wait_3_seconds" {
  create_duration = "3s"
}

resource "null_resource" "topic_events" {
  triggers = {
    always_run = timestamp()
    topic = var.topic_name
  }
  depends_on = [time_sleep.wait_3_seconds]
}
Run Code Online (Sandbox Code Playgroud)

模块测试,变量.tf

variable topic_name {}
Run Code Online (Sandbox Code Playgroud)

主模块调用模块测试(见上文):

module "test" {
  for_each= tomap(var.environments[var.dim_arr].clusters.events.topics)
  source = "./test"
  topic_name = "${var.dim_arr}.${each.value.topic}"
}
Run Code Online (Sandbox Code Playgroud)

逻辑是输入值在循环中处理,但由于测试模块中的 time_sleep 资源,该循环中引入了一些延迟,这反过来又会减少服务器的负载。

然而 terraform 尝试在嵌套模块中创建所有 time_sleep 资源,然后遍历主模块中的对象并以这种方式创建它们:

a) 创建所有 time_sleep 资源

b) 创建所有依赖于它们的资源(参见 a))

有什么办法可以改变这个逻辑,以便

-创建使用睡眠时间的资源

-time_sleep资源导致延迟以减少集群上的负载

- 处理循环中的下一个对象

任何建议或想法表示赞赏。

谢谢。

foreach delay terraform

6
推荐指数
1
解决办法
3万
查看次数

标签 统计

delay ×1

foreach ×1

terraform ×1