Как использовать npm в Terraform Entreprise? - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь создать приложение React. js, прежде чем архивировать его с помощью этого кода:

resource "null_resource" "build" {
  triggers = {
    always_run = "${timestamp()}"
  }
  provisioner "local-exec" {
    command = "cd ${path.module}/.. && npm run build"
    environment = var.environment_variables
  }
}
data "archive_file" "source_zip" {
  depends_on = [null_resource.build]
  type        = "zip"
  source_dir  = "../build"
  output_path = "dist/source.zip"
}

Этот код хорошо работает на моей локальной машине, но не работает в облаке Terraform (* 1005) *). NPM, кажется, не установлен на машине, где работает terraform. Вот ошибка, которую я получаю:

Error: Error running command 'cd ./.. && npm run build': exit status 127. Output: /bin/sh: 1: npm: not found

Итак, как установить npm в облаке Terraform?

1 Ответ

1 голос
/ 26 февраля 2020

Единственная найденная мною возможность - установить узел / npm на виртуальной машине terraform до его использования. Вот мой код:


resource "null_resource" "build" {
  triggers = {
    always_run = "${timestamp()}"
  }
  provisioner "local-exec" {
    command = <<-EOF
      cd ${path.module}/.. &&\
      mkdir ./node_install &&\
      cd ./node_install &&\
      curl https://nodejs.org/dist/latest-v10.x/node-v10.19.0-linux-x64.tar.gz | tar xz --strip-components=1 &&\
      export PATH="$PWD/bin:$PATH" &&\
      cd .. &&\
      npm install &&\
      npm run build
    EOF

    environment = var.environment_variables
  }
}
data "archive_file" "source_zip" {
  depends_on = [null_resource.build]
  type        = "zip"
  source_dir  = "../build"
  output_path = "dist/source.zip"
}

В разделе command я использую curl для загрузки nodejs, затем добавляю его (временно) к пути, чтобы потом я мог npm install и npm run build

...