How to add an ssh key to an GCP instance using terraform?
Here is tested one.
metadata {
sshKeys = "${var.ssh_user}:${var.ssh_key} \n${var.ssh_user1}:${var.ssh_key1}"
}
Just for the record. As of 0.12 it seems the block should look like:
resource "google_compute_instance" "default" {
# ...
metadata = {
ssh-keys = join("\n", [for user, key in var.ssh_keys : "${user}:${key}"])
}
# ...
}
(Note =
sign after metadata
token and ssh-keys
vs. sshKeys
).
If you want multiple keys you can use heredoc
like this
metadata = {
"ssh-keys" = <<EOT
<user>:<key>
<user>:<key>
EOT
}
I stayed with the weird formatting here in the post that terraform fmt
provided me.
I think something like this should work:
metadata = {
ssh-keys = "${var.gce_ssh_user}:${file(var.gce_ssh_pub_key_file)}"
}
https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys describes the metadata mechanism, and I found this example at https://github.com/hashicorp/terraform/issues/6678