Как вставить имя файла после переменной в terraform?

#terraform #terraform-provider-gcp

Вопрос:

Я создаю сценарий tf, который автоматизирует развертывание нескольких приложений. Некоторые из развернутых облачных ресурсов являются виртуальными машинами, и для их запуска после развертывания требуются некоторые сценарии. Чтобы автоматизировать эту задачу, я объявил несколько переменных, которые отображают эти сценарии.

Сегодня это работает так, как показано в примере ниже:

У меня есть десятки переменных сценария, объявленных на variables.tf файл

 variable "path_script_backend" {
  type        = string
  description = "The path to the backend script"
  default = "/application/scripts/backend.sh"
}
 

Затем я использую переменную для запуска необходимых сценариев на экземплярах

application.tf

 # Connect to the instance via Terraform and remotely executes the install script using SSH

    provisioner "file" {
        source      = var.path_script_backend
        destination = "/tmp/backend.sh"
      }
    
      provisioner "remote-exec" {
        inline = [
          "sudo chmod  x /tmp/backend.sh",
          "sudo /tmp/backend.sh"
        ]
      }
 

Все это работает нормально, но отзывы, которые я получил от команды ops, заключаются в том, что им требуется много времени, чтобы скопировать и вставить эти пути к файлам в несколько сценариев приложений, и они хотят, чтобы я просто использовал одну переменную для отображения папки, в которой находятся сценарии.

С учетом этого я попробовал следующий подход:

variables.tf

 variable "folder_scripts" {
  type        = string
  description = "The path to the scripts folder"
  default = "/application/scripts"
}
 

Затем я использую переменную папки имя файла для запуска необходимых сценариев на экземплярах

application.tf

 # Connect to the instance via Terraform and remotely executes the install script using SSH

    provisioner "file" {
        source      = var.folder_scripts"/backend.sh"
        destination = "/tmp/backend.sh"
      }
 

Но вышесказанное не работает, так как terraform не нравится формат. Я пробовал разные комбинации и регулярные выражения, чтобы соответствовать файлу, но безрезультатно.

Есть какие-нибудь идеи о том, что я могу сделать, чтобы это исправить?

Tks заранее

Комментарии:

1. попробуйте использовать source = "${var.folder_scripts}/backend.sh"

2. Ткс! Это сделало свое дело 🙂

3. terraform.io/docs/language/expressions/…