Terraform: скопировать файл в GCP Compute Instance - PullRequest
0 голосов
/ 17 января 2019

Это не может быть так сложно, конечно? Я пытался и потерпел неудачу с рядом методов.

Простое использование file provisioner было бы самым простым вариантом, но безрезультатно. Проблема в том, что в Compute Instance пароль не настроен как стандартный и нет ключей.

Таким образом, это привело меня к попытке что-то вроде этого:

resource "google_compute_instance" "test-build" {
...
  metadata {
    ssh-keys = "jon:${file("./gcloud_instance.pub")}"
  }
...

provisioner "file" {
  source      = "test/test_file"
  destination = "/tmp/test_file.txt"

  connection {
    type     = "ssh"
    private_key = "${file("./gcloud_instance")}"
    agent = "false"
  }
}

Опять безрезультатно. (К вашему сведению, пара ключей - это та, которую я создал, и я подтвердил, что открытый ключ передается в экземпляр вычисления)

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

Кто-нибудь нашел способ сделать это эффективно?

1 Ответ

0 голосов
/ 17 января 2019

Отмените это, я сработался .. это помогает, если я добавлю пользователя! Отвечая на это, в отличие от удаления, так как я не смог найти много другого в Интернете с таким примером, чтобы он мог пригодиться другим.

resource "google_compute_instance" "test-build" {
  project                   = "artifactory-staging"
  name                      = "file-transfer-test"
  machine_type              = "n1-standard-2"
  zone = "europe-west3-b"
  allow_stopping_for_update = "true"

  boot_disk {
    initialize_params {
      image = "centos-7-v20181210"
    }
  }
  network_interface {
    subnetwork         = "default"
    subnetwork_project = "artifactory-staging"
    access_config      = {}
  }
  metadata {
    ssh-keys = "jon:${file("./creds/gcloud_instance.pub")}"
  }

provisioner "file" {
  source = "creds/test_file"
  destination = "/tmp/test_file"

  connection {
    type = "ssh"
    user = "jon"
    private_key = "${file("./creds/gcloud_instance")}"
    agent = "false"
  }
}
}
...