问题描述
我有一个用例,我在 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"))
}
解决方法
您可以使用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
之后执行。