ייבוא המשאבים של Google Cloud למצב של Terraform

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

אתם יכולים לייבא את התשתית הקיימת שלכם ל-Terraform כדי לנהל באמצעות Terraform את המשאבים שיצרתם במקומות אחרים. ‏Google מספקת כלי שבעזרתו תוכלו לייבא את המשאבים מ-Google Cloud למצב של Terraform, ולנהל את הפריסה ב-Terraform.

אתם יכולים לייבא את המצב של פרויקטים, תיקיות או הארגון.

לפני שמתחילים

מתקינים את ממשק שורת הפקודה (CLI) ב-Config Connector.

gcloud components install config-connector

באמצעות Config Connector תוכלו להשתמש בכלי של Google Cloud לייבוא ל-Terraform.

יצירת קוד ב-Terraform למשאבים

מריצים את הפקודה gcloud beta resource-config bulk-export כדי ליצור פלט של כל הגדרות הפרויקט בנתיב entire-tf-output:

gcloud beta resource-config bulk-export \
  --path=entire-tf-output \
  --project=PROJECT_ID \
  --resource-format=terraform

יצירת מודולים של Terraform מהקוד שנוצר

מריצים את הפקודה gcloud beta resource-config terraform generate-import שמפנה אל התוכן בספריית הפלט:

gcloud beta resource-config terraform generate-import entire-tf-output

הפקודה יוצרת מודולים של Terraform וסקריפט ייבוא:

  • הקובץ gcloud-export-modules.tf, שמפנה לכל המודולים ממשאבי המשנה. התוכן של הקובץ נראה כך:

    provider "google" {
    project = "PROJECT_ID"
    }
    
    module "entire-tf-output-projects-PROJECT_ID-ComputeFirewall" {
    source = "./entire-tf-output/projects/PROJECT_ID/ComputeFirewall"
    }
    
    module "entire-tf-output-projects-PROJECT_ID-ComputeBackendService-global" {
    source = "./entire-tf-output/projects/PROJECT_ID/ComputeBackendService/global"
    }
    
    ...and so on
    
  • סקריפט מעטפת של קובץ הפעלה שמכיל רשימת פקודות של terraform import. השם שלו יהיה דומה ל-terraform_import_20220331-19-12-33.sh, לדוגמה:

    #!/bin/sh
    # Terraform Import Script generated by gcloud cli
    
    terraform import module.entire-tf-output-projects-PROJECT_ID-ComputeFirewall.google_compute_firewall.allow_ssh projects/PROJECT_ID/global/firewalls/allow-ssh
    
    ...and so on
    

    הפקודות terraform import משמשות לייבוא המודולים שנוצרו על ידי הפקודה generate-import למצב של Terraform.

ייבוא המודולים למצב של Terraform

  1. מפעילים:

    terraform init
    
  2. מריצים את הסקריפט:

    ./terraform_import_20220331-19-12-33.sh
    

    פלט:

    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Importing from ID
    "projects/PROJECT_ID/zones/us-central1-a/instances/instance-1"...
    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Import prepared!
     Prepared google_compute_instance for import
    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Refreshing state...
    [id=projects/PROJECT_ID/zones/us-central1-a/instances/instance-1]
    
    Import successful!
    
    The resources that were imported are shown above. These resources are now in
    your Terraform state and will henceforth be managed by Terraform.
    

השלבים הבאים