Kurzanleitung: VM-Instanz mit Terraform erstellen

In dieser Kurzanleitung erfahren Sie, wie Sie mit Terraform eine Compute Engine-VM-Instanz erstellen und eine Verbindung zur VM-Instanz herstellen.

Hashicorp Terraform ist ein IaC-Tool (Infrastructure as Code), mit dem Sie eine Cloud-Infrastruktur bereitstellen und verwalten können. Mit Terraform-Provider für Google Cloud (Google Cloud-Anbieter) können Sie die Google Cloud-Infrastruktur bereitstellen und verwalten.

Hinweise

  1. Wenn Sie ein Onlineterminal mit bereits eingerichteter gcloud CLI und Terraform einrichten möchten, aktivieren Sie Cloud Shell.

    Unten auf dieser Seite wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API:

    gcloud services enable compute.googleapis.com
  5. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/compute.instanceAdmin.v1

    gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE

Umgebung vorbereiten

  1. Klonen Sie das GitHub-Repository mit Terraform-Beispielen:

    git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
    
  2. Gehen Sie zu dem Verzeichnis, das das Schnellstartbeispiel enthält:

    cd terraform-docs-samples/compute/quickstart/create_vm
    

Terraform-Dateien prüfen

Prüfen Sie die Datei main.tf. Diese Datei definiert die Google Cloud-Ressourcen, die Sie erstellen möchten.

cat main.tf

Die Ausgabe sieht etwa so aus:

resource "google_compute_instance" "default" {
  name         = "my-vm"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-minimal-2210-kinetic-amd64-v20230126"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }
}

Diese Datei beschreibt die google_compute_instance-Ressource, die die Terraform-Ressource für die Compute Engine-VM-Instanz ist. google_compute_instance ist so konfiguriert, um die folgenden Eigenschaften zu haben:

  • name ist auf my-vm gesetzt.
  • machine_type ist auf n1-standard-1 gesetzt.
  • zone ist auf us-central1-a gesetzt.
  • boot_disk legt das Bootlaufwerk für die Instanz fest.
  • network_interface ist so eingestellt, dass das Standardnetzwerk in Ihrem Google Cloud-Projekt verwendet wird.

Compute Engine-VM-Instanz erstellen

  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Terraform verfügbar ist:

    terraform
    

    Die Ausgabe sollte in etwa so aussehen:

    
    Usage: terraform [global options] <subcommand> [args]
    
    The available commands for execution are listed below.
    The primary workflow commands are given first, followed by
    less common or more advanced commands.
    
    Main commands:
      init          Prepare your working directory for other commands
      validate      Check whether the configuration is valid
      plan          Show changes required by the current configuration
      apply         Create or update infrastructure
      destroy       Destroy previously-created infrastructure
    
    
  2. Initialisieren Sie Terraform mit dem folgenden Befehl. Mit diesem Befehl wird der Arbeitsbereich vorbereitet, damit Terraform Ihre Konfiguration anwenden kann.

    terraform init
    

    Die Ausgabe sollte in etwa so aussehen:

    
    Initializing the backend...
    
    Initializing provider plugins...
    - Finding latest version of hashicorp/google...
    - Installing hashicorp/google v5.35.0...
    - Installed hashicorp/google v5.35.0 (signed by HashiCorp)
    
    Terraform has created a lock file .terraform.lock.hcl to record the provider
    selections it made above. Include this file in your version control repository
    so that Terraform can guarantee to make the same selections by default when
    you run "terraform init" in the future.
    
    Terraform has been successfully initialized!
    
    
  3. Validieren Sie die Terraform-Konfiguration mit dem folgenden Befehl. Dieser Befehl führt die folgenden Aktionen aus:

    • Überprüft, ob die Syntax von main.tf korrekt ist
    • Zeigt eine Vorschau der Ressourcen an, die erstellt werden.
    terraform plan
    

    Die Ausgabe sollte in etwa so aussehen:

    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    
  4. Wenden Sie die Konfiguration an, um die in der Datei main.tf beschriebenen Ressourcen bereitzustellen:

    terraform apply
    

    Geben Sie bei Aufforderung yes ein.

    Terraform ruft Google Cloud APIs auf, um die in der Datei main.tf definierte VM-Instanz zu erstellen.

    Die Ausgabe sollte in etwa so aussehen:

    Apply complete! Resources: 1 added, 0 changed, 0 destroyed
    

Verbindung zur VM-Instanz herstellen

Stellen Sie eine Verbindung zu der soeben erstellten VM-Instanz her, indem Sie den folgenden Befehl ausführen:

gcloud compute ssh --zone=us-central1-a my-vm

Bereinigen

Löschen Sie das Google Cloud-Projekt mit den Ressourcen, damit Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.

Führen Sie in Cloud Shell den folgenden Befehl aus, um die Terraform-Ressourcen zu löschen:

terraform destroy

Geben Sie bei Aufforderung yes ein.

Die Ausgabe sollte in etwa so aussehen:

Destroy complete! Resources: 1 destroyed.

Nächste Schritte