如何在Terraform中使用项目范围的SSH密钥

6

这里有一个关于如何将SSH密钥添加到Terraform实例的帖子。但是,我的问题是如何在Terraform中使用项目范围的SSH密钥?

    /*CREATE INSTANCE TEMPLATE*/
resource "google_compute_instance_template" "template-030601" {
  name        = "terraform-template-030601"
  description = "This template is used to create app server instances."

  tags = ["foo", "bar"]

  labels = {
    environment = "sbx"
  }

  instance_description = "description assigned to instances"
  machine_type         = "f1-micro"
  can_ip_forward       = false


  //Create a new boot disk from an image
  disk {
        source_image = "https://www.googleapis.com/compute/v1/projects/hp-img-cof-st-core-prd/global/images/cof-ubuntu1604-180124"
        auto_delete  = false
        boot         = true
  }

  network_interface {
    subnetwork         = "${var.subnet}"
    subnetwork_project = "${var.subnet_project}"
  }

  metadata {
      sshKeys = 
  }

  metadata_startup_script = "${data.template_file.install_script.rendered}"

}

谷歌云是否支持类似 AWS 密钥对的功能(https://docs.aws.amazon.com/cli/latest/userguide/cli-ec2-keypairs.html)? - BMW
是的,它可以。对此的简单答案是不要设置sshkeys元数据。只需确保在GCP的项目范围存储库中设置公钥即可。它将自动应用于实例。 - Cap1Topher
2个回答

3

首先,如果您想在整个项目中使用元数据键,则需要创建一个包含您的ssh密钥的单独部分(如果您需要指定多个密钥,则使用heredoc语法非常有用):

resource "google_compute_project_metadata" "ssh_keys" {
    metadata {
      ssh-keys = <<EOF
      user1:ssh-rsa <YOUR_SSH_PUBLIC_KEY> user1@darkstar
      user2:ssh-rsa <YOUR_SSH_PUBLIC_KEY> user2@domain
EOF
    }
}

在您的google_compute_instance中,您需要在元数据配置中指定block-project-ssh-keys。因此,请尝试添加以下内容:

resource "google_compute_instance_template" "template-030601" {
    ...
    metadata {
        block-project-ssh-keys = false
    }
    ...
}

如果您想启用它,请将false替换为true。希望这对您有用。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接