#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. Ткс! Это сделало свое дело 🙂