Terraform在应用时从远程URL下载本地文件,在销毁时删除文件

时间:2020-07-10 02:54:25

标签: terraform

在创建实际的lambda资源之前,我需要从URL下载lambda存档文件,并且在运行terraform destroy时需要删除此文件。基本上是从远程URL创建的本地文件资源。我目前使用null_resourcelocal-exec的预配器来完成它,如下所示。但是当我运行terraform destroy时,这不会删除文件。有更好的方法吗?

resource "null_resource" "lambda_jar" {
  triggers = {
    on_version_change = "${var.lambda_archive_version}"
  }

  provisioner "local-exec" {
    command = "curl -o lambda.jar ${var.server_url}/${var.lambda_archive_version}.jar"
  }
}

1 个答案:

答案 0 :(得分:1)

有趣的用例...我自己还没有尝试过,但是我敢肯定,下面的两个选项之一将允许您完成此操作。

  1. 首选选项。与when = destroy一起使用另一个本地执行配置器:
resource "null_resource" "lambda_jar" {
  triggers = {
    on_version_change = "${var.lambda_archive_version}"
  }

  provisioner "local-exec" {
    command = "curl -o lambda.jar ${var.server_url}/${var.lambda_archive_version}.jar"
  }

  provisioner "local-exec" {
    when    = destroy
    command = "$YOUR_CURL_DELETE_COMMAND"
  }
}
  1. 使用terraform-provider-shell。这使您可以直接在“自定义”资源中编写各种terraform生命周期命令的脚本。在v0.12中添加自定义提供程序不是很好,因为它需要在整个团队中进行手动安装,但是该提供程序是瑞士军刀,如果以上方法均无法解决,那么绝对可以满足您的要求。 li>