ייבוא תמונות של מכונות ממכשירים וירטואליים

אפשר להשתמש בתמונת מכונה כדי לאחסן את כל ההגדרות, המטא-נתונים, ההרשאות והנתונים מדיסק אחד או יותר של מכונה וירטואלית שפועלת ב-Compute Engine. מידע על מקרים שבהם כדאי להשתמש בתמונות מכונה ועל אופן השימוש בהן זמין במאמר תמונות מכונה.

במאמר הזה מוסבר איך מייבאים קובץ אימג' של מכונה ממכשיר וירטואלי.

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

מגבלות

  • אפשר לשתף תמונת מכונה בין פרויקטים. עם זאת, אין תמיכה ברשתות VPC משותפות.
  • התכונה הזו לא נתמכת בפרויקטים שמוגנים באמצעות VPC Service Controls.
  • אי אפשר ליצור קובצי אימג' של מכונות ממכונות וירטואליות (VM) של מקור עם דיסקים שמחוברים אליהן בנפח של יותר מ-200TB.

מערכות הפעלה נתמכות

למידע על תמיכה במערכות הפעלה, אפשר לעיין בפרטים על מערכות הפעלה.

ייבוא תמונות מכונה

אפשר לייבא תמונות מכונה ממכשירים וירטואליים באמצעות Google Cloud CLI או Cloud Build API.

gcloud

כדי לייבא קובץ אימג' של מכונה ממכשירים וירטואליים, משתמשים בפקודה gcloud compute machine-images import.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

מחליפים את מה שכתוב בשדות הבאים:

  • ‫MACHINE_IMAGE_NAME: שם תמונת המכונה שרוצים לייבא.
  • ‫SOURCE_URI: הנתיב לקובץ OVA או OVF ב-Cloud Storage.
  • ‫OS: מערכת ההפעלה של קובץ ה-OVA. הדגל הזה הוא אופציונלי כברירת מחדל, אבל יכול להיות שהוא יידרש במקרים מסוימים. מומלץ לספק את הדגל הזה.

דוגמה

לדוגמה, אפשר להשתמש בפקודה הבאה של gcloud כדי לייבא קובץ OVA של מכונה וירטואלית בשם my-machine-image מקובץ OVA מקור בשם my-ova שמאוחסן בספרייה gs://my-bucket ומריץ את centos-7:

gcloud compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

REST

  1. מעלים את המכשיר הווירטואלי ל-Cloud Storage.

  2. שולחים בקשת POST ל-method‏ projects.builds.create.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-import/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט שאליו רוצים לייבא את קובץ ה-OVA.
    • ‫MACHINE_IMAGE_NAME: השם של תמונת המכונה שרוצים לייבא. לדוגמה, my-machine-image.
    • ‫SOURCE_URI: ה-URI של קובץ ה-OVA או של ספרייה שמכילה חבילות OVF שמאוחסנות ב-Cloud Storage. לדוגמה, gs://my-bucket/my-instance.ova.
    • OS: מערכת ההפעלה של קובץ ה-OVA. לדוגמה, ubuntu-1604. הדגל הזה הוא אופציונלי כברירת מחדל, אבל יכול להיות שהוא יידרש במקרים מסוימים. מומלץ לספק את הדגל הזה.

    לערכים נוספים של args שאפשר לספק, אפשר לעיין בקטע בנושא דגלים אופציונליים בדף GitHub בנושא ייבוא OVF ב-Compute Engine.

ייבוא תמונות מכונה עם החלפות של OVF

כשמייבאים תמונת מכונה ממכשיר וירטואלי, אפשר לבטל את ההגדרות בקובץ OVF. לדוגמה, אתם יכולים לשנות את הגדרת המעבד (CPU) או הזיכרון, או להשתמש ברשת בהתאמה אישית.

מעבד (CPU) וזיכרון בהתאמה אישית

כדי לשנות את הגדרות המעבד או הזיכרון שצוינו בקובץ ה-OVF, מבצעים את השלבים הבאים:

gcloud

כדי לשנות את הגדרות המעבד או הזיכרון שצוינו בקובץ OVF, פועלים לפי השלבים לייבוא תמונת מכונה ב-Google Cloud CLI ומציינים את הדגלים --custom-cpu ו---custom-memory.

דוגמה

תמונת מכונה בשם my-machine-image כוללת את ההגדרות הבאות שמוגדרות כהגדרות ברירת מחדל בקובץ ה-OVF:

  • מערכת הפעלה: Ubuntu 1404
  • מעבד (CPU): 2 CPUs
  • זיכרון: 2048 MB

כדי לייבא את my-machine-image עם השינויים האלה, מריצים את הפקודה הבאה:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

כדי לשנות את הגדרות המעבד או הזיכרון שצוינו בקובץ OVF, פועלים לפי השלבים של Compute Engine API כדי לייבא תמונת מכונה ולציין את הארגומנט -machine-type. המחרוזת -machine-type מייצגת סוג מכונה מוגדר מראש או בהתאמה אישית מסדרת N1 לשימוש.

דוגמה

תמונת מכונה בשם my-machine-image בפרויקט my-project כוללת את ההגדרות הבאות שמוגדרות כברירת מחדל בקובץ ה-OVF:

  • מערכת הפעלה: Ubuntu 1404
  • מעבד (CPU): 2 CPUs
  • זיכרון: 2048 MB

כדי לייבא את my-machine-image עם השינויים האלה, שולחים את הבקשה הבאה ל-Cloud Build API.

POST https://cloudbuild.googleapis.com/v1/projects/my-project/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-import/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

רשתות בהתאמה אישית

כדי לבטל את הגדרת הרשת שצוינה בקובץ OVF, מבצעים את השלבים הבאים:

gcloud

כדי להגדיר רשת בהתאמה אישית, פועלים לפי השלבים של Google Cloud CLI לייבוא תמונת מכונה ומציינים את הדגל --network. אם הרשת מוגדרת עם מצב רשת משנה בהתאמה אישית, צריך לציין גם את הדגלים --subnet ו---zone.

דוגמה

תמונת מכונה בשם my-machine-image כוללת את ההגדרות הבאות שמוגדרות כהגדרות ברירת מחדל בקובץ ה-OVF:

  • מערכת הפעלה: Ubuntu 1404
  • רשת: custom-vpc-network
  • רשת משנה: company-vpc-us-east1-c
  • אזור: us-east1-c

כדי לייבא את my-machine-image עם ההגדרות האלה, מריצים את פקודת הדוגמה הבאה:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network=custom-vpc-network \
    --subnet=company-vpc-us-east1-c \
    --zone=us-east1-c

REST

כדי להשתמש ברשת בהתאמה אישית, פועלים לפי השלבים של REST כדי לייבא תמונת מכונה ומציינים ארגומנט -network. אם הרשת מוגדרת עם מצב של רשת משנה בהתאמה אישית, צריך לציין גם את הארגומנטים -subnet ו--zone.

דוגמה

תמונת מכונה בשם my-machine-image כוללת את ההגדרות הבאות שמוגדרות כהגדרות ברירת מחדל בקובץ ה-OVF:

  • מערכת הפעלה: Ubuntu 1404
  • רשת: custom-vpc-network
  • רשת משנה: company-vpc-us-east1-c
  • אזור: us-central1-c

כדי לייבא את my-machine-image עם השינויים האלה, שולחים את הבקשה הבאה ל-Compute Engine API.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-import/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

מחליפים את PROJECT_ID במזהה הפרויקט.

ייבוא תמונת מכונה ברשת שלא מאפשרת כתובת IP חיצונית

כדי לייבא תמונת מכונה באמצעות רשת שלא מאפשרת כתובות IP חיצוניות, פועלים לפי השלבים הבאים:

  1. מוסיפים את המכשיר הווירטואלי ל-Cloud Storage.

  2. תהליך הייבוא מחייב התקנה של מנהלי חבילות במערכת ההפעלה של קובץ האימג' של המכונה. יכול להיות שמנהלי החבילות האלה יצטרכו לשלוח בקשות למאגרי חבילות שנמצאים מחוץ ל- Google Cloud. כדי לאפשר גישה לעדכונים האלה, צריך להגדיר את Cloud NAT. למידע נוסף, קראו את המאמר יצירת הגדרת NAT באמצעות Cloud Router.

  3. מגדירים גישה פרטית ל-Google. מידע נוסף זמין במאמר בנושא הגדרת גישה פרטית ל-Google.

  4. מייבאים את תמונת המכונה באמצעות Google Cloud CLI או Cloud Build API.

    כשמייבאים קובץ אימג' של מכונה ממכשיר וירטואלי, נוצרות בפרויקט מכונות וירטואליות זמניות. כדי לוודא שלמכונות הווירטואליות הזמניות האלה לא יוקצו כתובות IP חיצוניות, צריך לציין דגל או ארגומנט נוסף.

    כדי לקבל מידע נוסף על הארגומנט או הדגל הנדרשים, לוחצים על הכרטיסיות הבאות:

gcloud

משתמשים בפקודה gcloud compute machine-images import עם הדגל --no-address .

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

מחליפים את מה שכתוב בשדות הבאים:

  • ‫MACHINE_IMAGE_NAME: השם של תמונת המכונה שרוצים לייבא.
  • ‫SOURCE_URI: ה-URI של קובץ ה-OVA או ה-OVF שלכם ב-Cloud Storage. לדוגמה, gs://my-bucket/Ubuntu.ova.
  • OS: מערכת ההפעלה של קובץ ה-OVA. הדגל הזה הוא אופציונלי כברירת מחדל, אבל יכול להיות שהוא יידרש במקרים מסוימים. מומלץ לספק את הדגל הזה. במאמר הדגל --os תוכלו למצוא רשימה של הערכים שנתמכים באפשרויות של הפקודה gcloud compute machine-images import.
  • ‫ZONE: האזור שאליו רוצים לייבא את תמונת המכונה. אם לא מציינים אזור, המערכת משתמשת באזור ברירת המחדל של הפרויקט.

REST

שליחת בקשת POST לשיטה projects.builds.create באמצעות Cloud Build API. מציינים את הארגומנט -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-import/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט שאליו רוצים לייבא את קובץ האימג' של המכונה.
  • ‫MACHINE_IMAGE_NAME: השם של תמונת המכונה שרוצים לייבא. לדוגמה, my-machine-image.
  • ‫SOURCE_URI: ה-URI של קובץ ה-OVA שמאוחסן ב-Cloud Storage. לדוגמה, gs://my-bucket/my-machine.ova.
  • ‫OS: מערכת ההפעלה של קובץ ה-OVA. לדוגמה, ubuntu-1604. הדגל הזה הוא אופציונלי כברירת מחדל, אבל יכול להיות שהוא יידרש במקרים מסוימים. מומלץ לספק את הדגל הזה. במאמר אפשרויות של הדגל --os של הפקודה gcloud compute instances import תוכלו למצוא רשימה של הערכים שנתמכים.
  • ‫ZONE: האזור שאליו מייבאים את קובץ האימג' של המכונה.

ייבוא תמונת מכונה באמצעות חשבונות שירות בהתאמה אישית

במהלך ייבוא של תמונת מכונה, נוצרות בפרויקט מכונות וירטואליות (VM) זמניות. צריך לאמת את כלי הייבוא במכונות הווירטואליות הזמניות האלה.

חשבון שירות הוא זהות שמחוברת למכונה וירטואלית. אפשר לגשת לטוקני גישה של חשבון שירות דרך שרת המטא-נתונים של המכונה הווירטואלית ולהשתמש בהם כדי לאמת את כלי הייבוא במכונה הווירטואלית.

כברירת מחדל, תהליך הייבוא משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. עם זאת, אם חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine מושבת בפרויקט שלכם, או אם אתם רוצים להשתמש בחשבון שירות מותאם אישית של Compute Engine, אתם צריכים ליצור חשבון שירות ולהגדיר אותו לתהליך הייבוא.

gcloud

  1. מוסיפים את המכשיר הווירטואלי ל-Cloud Storage.

  2. יוצרים חשבון שירות ומקצים לו את התפקידים המינימליים. מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירה וניהול של חשבונות שירות.

    לכל הפחות, צריך להקצות לחשבון השירות של Compute Engine את התפקידים הבאים:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    התפקידים המינימליים האלה נדרשים לחשבון השירות שמצוין בדגל --compute-service-account. מידע נוסף זמין במאמר הקצאת התפקידים הנדרשים לחשבון השירות של Compute Engine.

  3. משתמשים בפקודה gcloud compute machine-images import כדי לייבא תמונת מכונה ממכשירים וירטואליים.

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MACHINE_IMAGE_NAME: שם תמונת המכונה שרוצים לייבא.
    • ‫SOURCE_URI: הנתיב לקובץ OVA או OVF ב-Cloud Storage.
    • ‫OS: מערכת ההפעלה של קובץ ה-OVA. הדגל הזה הוא אופציונלי כברירת מחדל, אבל יכול להיות שהוא יידרש במקרים מסוימים. מומלץ לספק את הדגל הזה.
    • ‫TEMP_SERVICE_ACCOUNT_EMAIL: כתובת האימייל שמשויכת לחשבון השירות המותאם אישית שנוצר בשלב הקודם. חשבון השירות הזה משמש את המכונות הווירטואליות הזמניות. אם לא מציינים חשבון שירות, המכונה הווירטואלית משתמשת בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
    • ‫SERVICE_ACCOUNT_EMAIL: כתובת האימייל שמשויכת לחשבון השירות בהתאמה אישית, שצריך לצרף לכל מכונה וירטואלית שנוצרה מתמונת המכונה הזו. אין הגבלות הרשאה לחשבון השירות הזה, ואפשר להתאים אותו אישית לפי הצורך. אם לא מציינים חשבון שירות, חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine מצורף למכונה הווירטואלית.
    • ‫SCOPES: ציון רמת הגישה לאפשרות --service-account. אם לא מציינים היקפים, המערכת משתמשת בהיקפי ברירת המחדל. מידע נוסף זמין במאמר בנושא הדגל --scopes.

REST

  1. מוסיפים את המכשיר הווירטואלי ל-Cloud Storage.

  2. יוצרים חשבון שירות ומקצים לו את התפקידים המינימליים. מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירת חשבונות שירות.

    לכל הפחות, צריך להקצות לחשבון השירות של Compute Engine את התפקידים הבאים:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    אלה התפקידים המינימליים שנדרשים לחשבון השירות שצוין בארגומנט -compute-service-account. מידע נוסף זמין במאמר הקצאת התפקידים הנדרשים לחשבון השירות של Compute Engine.

  3. שולחים בקשת POST לשיטה projects.builds.create באמצעות Cloud Build API.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "timeout":"7200s",
    "steps":[
      {
        "args":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-import/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט שאליו רוצים לייבא את קובץ האימג' של המכונה.
    • ‫MACHINE_IMAGE_NAME: השם של תמונת המכונה שרוצים לייבא. לדוגמה, my-machine-image.
    • ‫SOURCE_URI: ה-URI של קובץ ה-OVA שמאוחסן ב-Cloud Storage. לדוגמה, gs://my-bucket/my-machine.ova.
    • ‫OS: מערכת ההפעלה של קובץ ה-OVA. לדוגמה, ubuntu-1604. הדגל הזה הוא אופציונלי כברירת מחדל, אבל יכול להיות שהוא יידרש במקרים מסוימים. מומלץ לספק את הדגל הזה. במאמר אפשרויות של הדגל --os של הפקודה gcloud compute instances import תוכלו למצוא רשימה של הערכים שנתמכים.
    • ‫ZONE: האזור שאליו מייבאים את קובץ האימג' של המכונה.
    • ‫TEMP_SERVICE_ACCOUNT_EMAIL: כתובת האימייל שמשויכת לחשבון השירות המותאם אישית שנוצר בשלב הקודם. חשבון השירות הזה משמש את המכונות הווירטואליות הזמניות. אם לא מציינים חשבון שירות, המכונה הווירטואלית משתמשת בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
    • ‫SERVICE_ACCOUNT_EMAIL: כתובת האימייל שמשויכת לחשבון השירות בהתאמה אישית, שצריך לצרף לכל מכונה וירטואלית שנוצרה מתמונת המכונה הזו. אין הגבלות הרשאה לחשבון השירות הזה, ואפשר להתאים אותו אישית לפי הצורך. אם לא מציינים חשבון שירות, חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine מצורף למכונה הווירטואלית.
    • ‫SCOPES: ציון רמת הגישה לאפשרות --service-account. אם לא מציינים היקף, המערכת משתמשת בהיקפי ברירת המחדל. מידע נוסף זמין בקטע הדגל --scopes.

מה השלב הבא?