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

אפשר להשתמש בתמונת מכונה כדי לאחסן את כל ההגדרות, המטא-נתונים, ההרשאות והנתונים מדיסק אחד או יותר של מכונה וירטואלית שפועלת ב-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 הבאה כדי לייבא תמונת מכונה בשם 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.s3nsapis.fr/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-tools/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) וזיכרון בהתאמה אישית

כדי לשנות את הגדרות המעבד או הזיכרון שצוינו בקובץ ה-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.s3nsapis.fr/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-tools/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-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

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

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

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

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

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

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

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

    כשמייבאים תמונת מכונה ממכשיר וירטואלי, נוצרות מכונות VM זמניות בפרויקט. כדי לוודא שלא מוקצות כתובות 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-tools/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 ל-method ‏projects.builds.create באמצעות Cloud Build API.

    POST https://cloudbuild.s3nsapis.fr/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-tools/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.

מה השלב הבא?