Terraform: не может удаленно исполняться на виртуальной машине с вычислительным движком с сгенерированным ключом SSH - PullRequest
3 голосов
/ 10 апреля 2019

Я пытаюсь удаленно выполнить некоторые команды на недавно подготовленной виртуальной машине Google Cloud Platform Compute Engine, используя ssh-ключи с Terraform. Вот мой код:

resource "tls_private_key" "ssh-key" {
  algorithm = "RSA"
  rsa_bits  = 4096
}

resource "google_compute_instance" "static-content" {

  # ...

  metadata {
    sshKeys = "root:${tls_private_key.ssh-key.public_key_openssh}"
  }

  connection {
    type = "ssh"
    user = "root"
    private_key = "${tls_private_key.ssh-key.private_key_pem}"
  }

  provisioner "remote-exec" {
    inline = [
      "curl -L https://github.com/aelsabbahy/goss/releases/download/v0.3.6/goss-linux-amd64 -o ~/goss",
      "chmod +x ~/goss",
      "~/goss -g ~/gossfile.yml validate",
    ]
  }

}

Вывод, который я получаю в приложении Terraform, равен

google_compute_instance.static-content: Still creating... (2m10s elapsed)
google_compute_instance.static-content (remote-exec): Connecting to remote host via SSH...
google_compute_instance.static-content (remote-exec):   Host: 35.198.166.131
google_compute_instance.static-content (remote-exec):   User: root
google_compute_instance.static-content (remote-exec):   Password: false
google_compute_instance.static-content (remote-exec):   Private key: true
google_compute_instance.static-content (remote-exec):   SSH Agent: false
google_compute_instance.static-content (remote-exec):   Checking Host Key: false

Таким образом, похоже, что ключ ssh неправильно распространяется на виртуальную машину. Любые намеки, почему это не работает?

1 Ответ

1 голос
/ 10 апреля 2019

похоже, что вы только что попробовали его по-другому, попробуйте с приведенным ниже кодом, который работал для меня

provisioner "remote-exec" {
connection {
type = "ssh"
port = 22
user = "username"
agent = "false"
private_key = "${file("/path/to/your/pem_file")}"
}
 inline = [
 "your command goes here",
  ]
}
}
...