#terraform #terraform0.12
Вопрос:
Я пытаюсь использовать аргумент сценария с поставщиком терраформирования удаленного исполнителя. Согласно документации, аргумент сценария выполняет следующее:
сценарий — это путь (относительный или абсолютный) к локальному сценарию, который будет скопирован на удаленный ресурс и затем выполнен. Это не может быть предоставлено с помощью встроенных или скриптов.
Вот ссылка на документ: https://www.terraform.io/docs/language/resources/provisioners/remote-exec.html
Вот код:
script = [
"./scripts/provision.sh"
]
Вот в чем ошибка:
Error: Incorrect attribute value type
on main.tf line 86, in resource "vsphere_virtual_machine" "vm":
86: script = [
87: "./scripts/provision.sh",
88: ]
Inappropriate value for attribute "script": string required.
Любая помощь будет признательна.
Ответ №1:
Я новичок в TF — скрипт не принимает список, который определяется с помощью квадратных скобок []. Решение состоит в том, чтобы использовать
script = "./scripts/provision.sh"
Ответ №2:
Если вы посмотрите на документ, там написано:
Вы не можете передавать какие-либо аргументы сценариям с помощью аргументов сценария или сценариев этому поставщику. Если вы хотите указать аргументы, загрузите сценарий с помощью средства предоставления файлов, а затем используйте inline для его вызова. Пример:
resource "aws_instance" "web" {
# ...
provisioner "file" {
source = "script.sh"
destination = "/tmp/script.sh"
}
provisioner "remote-exec" {
inline = [
"chmod x /tmp/script.sh",
"/tmp/script.sh args",
]
}
}
Кроме того, я бы рекомендовал использовать встроенный поверх сценария/сценариев(мои личные предпочтения). Если вам нужно использовать скрипты, используйте без фигурных скобок.
Дайте мне знать, если вам понадобится дополнительная помощь с удаленным исполнителем.