首页 > 解决方案 > 如何在脚本开始时在 terraform 中运行 null_resource

问题描述

我有一个用例,我从 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"))
}

标签: terraformterraform-provider-awsterraform0.12+terraform-template-file

解决方案


您可以使用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


推荐阅读