Terraform загружает локальный файл с удаленного URL-адреса при применении и удаляет файл при уничтожении - PullRequest
2 голосов
/ 10 июля 2020

Мне нужно загрузить файл архива лямбда с URL-адреса до создания фактического ресурса лямбда, и этот файл нужно удалить, когда я запускаю terraform destroy. В основном это локальный файловый ресурс, созданный из удаленного URL-адреса. В настоящее время у меня это делается с помощью инициатора null_resource и local-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 голосов
/ 10 июля 2020

Интересный вариант использования ... Я сам не пробовал, но уверен, что один из двух вариантов ниже позволит вам выполнить sh это.

  1. Предпочтительный вариант . Используйте другой провайдер local-exe c с 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"
  }
}
Используйте terraform-provider-shell . Это позволяет вам создавать сценарии для различных команд жизненного цикла terraform непосредственно в «настраиваемом» ресурсе. Нехорошо добавлять собственных провайдеров в v0.12, потому что это требует ручной установки в вашей команде, но этот провайдер - швейцарский армейский нож и определенно может сделать то, о чем вы просите, если вышеперечисленное не сработает.
...