Google Cloud Platformでインスタンスを作成するTerraformスクリプトがあるので、Teraformスクリプトで作成したインスタンスにsshキーを追加して、sshを介してインスタンスをプロビジョニングできるようにしたいと考えています。これが私の現在のterraformスクリプトです。
#PROVIDER INFO
provider "google" {
credentials = "${file("account.json")}"
project = "myProject"
region = "us-central1"
}
#MAKING CONSUL SERVERS
resource "google_compute_instance" "default" {
count = 3
name = "a-consul${count.index}"
machine_type = "n1-standard-1"
zone = "us-central1-a"
disk {
image = "ubuntu-1404-trusty-v20160627"
}
# Local SSD disk
disk {
type = "local-ssd"
scratch = true
}
network_interface {
network = "myNetwork"
access_config {}
}
}
私のterraformスクリプトにsshキーを追加させるには、何を追加する必要がありますか/Users/myUsername/.ssh/id_rsa.pub
?
私はこのようなものがうまくいくと思います:
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 はメタデータメカニズムを説明しており、この例は https:// github .com/hashicorp/terraform/issues/6678
参考までに。 0.12以降、ブロックは次のようになります。
resource "google_compute_instance" "default" {
# ...
metadata = {
ssh-keys = join("\n", [for user, key in var.ssh_keys : "${user}:${key}"])
}
# ...
}
(metadata
トークンの後の=
署名とssh-keys
対sshKeys
に注意してください)。
こちらがテスト済みです。
metadata {
sshKeys = "${var.ssh_user}:${var.ssh_key} \n${var.ssh_user1}:${var.ssh_key1}"
}
複数のキーが必要な場合は、このようにheredoc
を使用できます
metadata = {
"ssh-keys" = <<EOT
<user>:<key>
<user>:<key>
EOT
}
私はここの奇妙なフォーマットのままterraform fmt
提供してくれました。