2016-07-28 24 views
4

Ich habe also ein Terraform-Skript, das Instanzen in der Google Cloud Platform erstellt, möchte, dass mein Terraform-Skript auch meinen ssh-Schlüssel zu den von mir erstellten Instanzen hinzufügt, damit ich sie über ssh bereitstellen kann. Hier ist mein aktuelles Terraform-Skript.Wie fügt man mit Hilfe von Terraform einen SSH-Schlüssel zu einer GCP-Instanz hinzu?

#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 {} 
    } 
} 

Was muss ich diesem hinzufügen zu meinem Terraforming Skript habe meine ssh /Users/myUsername/.ssh/id_rsa.pub Schlüssel hinzufügen?

Antwort

6

Ich denke, so etwas wie dies funktionieren soll:

metadata { 
    sshKeys = "${var.gce_ssh_user}:${file(var.gce_ssh_pub_key_file)}" 
    } 

https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys den Metadaten-Mechanismus beschreibt, und ich fand dieses Beispiel bei https://github.com/hashicorp/terraform/issues/6678

+0

Hey ich eine schnelle Followup auf diese Frage habe, es isn‘ t bezieht sich auf das Hinzufügen von ssh-Schlüsseln, kann aber die 'metadata'-Funktion von gcp terraform-Instanzen verwenden. Ich möchte, dass Terraform zu meinen Instanzen das '--can-ip-forward'-Tag hinzufügt, wie kann ich das tun? –

+0

Sieht aus, als würden Sie einfach 'can_ip_forward = true' zur Ressource hinzufügen: https://github.com/iostat/mesos-fun/blob/bb08bc4866a1ba4e535cbff4eba6611f1d3838b4/terraform/3-slaves.tf und https://www.terraform.io /docs/providers/google/r/compute_instance.html – mblakele