Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform在应用时从远程URL下载本地文件,在销毁时删除文件_Terraform - Fatal编程技术网

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

Terraform在应用时从远程URL下载本地文件,在销毁时删除文件,terraform,Terraform,在创建实际的lambda资源之前,我需要从URL下载一个lambda归档文件,并且在运行terraform destroy时需要删除该文件。基本上是从远程URL创建的本地文件资源。我目前使用null_资源和localexec供应器完成了这项工作,如下所示。但当我运行terraform destroy时,这不会删除该文件。有更好的办法吗 resource "null_resource" "lambda_jar" { triggers = { on

在创建实际的lambda资源之前,我需要从URL下载一个lambda归档文件,并且在运行terraform destroy时需要删除该文件。基本上是从远程URL创建的本地文件资源。我目前使用
null_资源
localexec
供应器完成了这项工作,如下所示。但当我运行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"
  }
}

有趣的用例。。。我自己也没有尝试过,但我很确定下面两个选项中的一个会让你实现这一点

  • 首选选项。将另一个本地exec Provisionier与
    when=destroy
    一起使用:
  • 使用。这允许您在“自定义”资源中直接编写各种地形生命周期命令的脚本。在v0.12中添加自定义提供程序并不太好,因为它需要整个团队手动安装,但该提供程序是一个瑞士军刀,如果上述操作不起作用,它肯定可以满足您的要求
  • 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"
      }
    }