Использование аргумента сценария с помощью remote-exec — terraform

#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",
    ]
  }
}
 

Кроме того, я бы рекомендовал использовать встроенный поверх сценария/сценариев(мои личные предпочтения). Если вам нужно использовать скрипты, используйте без фигурных скобок.

Дайте мне знать, если вам понадобится дополнительная помощь с удаленным исполнителем.