2

我有一个用例,我从 terraform 中的本地人获取所有变量,如下所示,但在此之前,我想运行一个 null_resource 块,它将运行一个 python 脚本并将所有数据更新到本地文件中。

所以我的用例简单来说是在 terraform 脚本的开头执行一个 null_resource 块,然后运行所有其他资源块

我当前的代码示例如下:

// executing script for populating data in app_config.json
resource "null_resource" "populate_data" {
  provisioner "local-exec" {
    command = "python3 scripts/data_populate.py"
  }
}


// reading data variables from app_config.json file
locals {
  config_data = jsondecode(file("${path.module}/app_config.json"))
}

我该如何做到这一点?我所尝试的只是在本地人中添加一个触发器命令,如下所示,但即使这样也不起作用。

locals {
  triggers = {
    order = null_resource.populate_data.id
  }
  
  config_data = jsondecode(file("${path.module}/app_config.json"))
}

4

1 回答 1

3

您可以使用depends_on

resource "null_resource" "populate_data" {
  provisioner "local-exec" {
    command = "python3 scripts/data_populate.py"
  }
}


// reading data variables from app_config.json file
locals {
  depends_on = [null_resource.populate_data]
  config_data = jsondecode(file("${path.module}/app_config.json"))
}

现在总是locals会被执行populate_data

于 2020-12-28T14:03:49.307 回答