Как вы получаете JS файл в качестве модуля в terraform? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь сделать следующее:

module “git_file” {
  source = "git::https://githubXX.com/abc.js"
}

data "archive_file" “init” {
type        = "zip"
git_file = "${module.git_file.source}"
}

Я не могу заставить вышеуказанную работу работать. Независимо от того, используете ли вы https: // или s sh: //

Как получить файл JS в качестве модуля в terraform?

1 Ответ

1 голос
/ 16 апреля 2020
Блок

A module предназначен для загрузки модулей Terraform и их вспомогательных ресурсов в ваш модуль по определенному пути модуля. Его нельзя использовать так, как вы намереваетесь.

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

module "servers" {
  source = "./app-cluster"

  servers = 5
}

Источник: Вызов дочернего модуля - Модули - Язык конфигурации - Документы Terraform

Это что-то вроде импорта, запроса или включения на других языках. Его нельзя использовать для загрузки файла для использования в модуле Terraform.

Вы можете использовать источник данных http , чтобы делать то, что вы опишите:

data "http" "git_file" {
  url = "https://githubXX.com/abc.js"
}

data "archive_file" “init” {
  type        = "zip"
  git_file = data.http.git_file.body
}

Это также вряд ли сработает, как вы ожидаете. Для этого вам определенно понадобится ссылка на исходный код GitHub.

Вы должны рассмотреть альтернативное решение, предусматривающее использование ab c. js в том же хранилище или использование null_resource с local_exe c инициатора , чтобы загрузить его с помощью скрипта.

resource "null_resource" "" {
  provisioner "local-exec" {
    command = "git clone https://github.com/..."
  }
}

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

...