אפשר להשתמש בתמונת מכונה כדי לאחסן את כל ההגדרות, המטא-נתונים, ההרשאות והנתונים מדיסק אחד או יותר של מכונה וירטואלית שפועלת ב-Compute Engine. מידע על מקרים שבהם כדאי להשתמש בתמונות מכונה ועל אופן השימוש בהן זמין במאמר תמונות מכונה.
במאמר הזה מוסבר איך מייבאים קובץ אימג' של מכונה ממכשיר וירטואלי.
לפני שמתחילים
- אם בפרויקט שאליו רוצים לייבא את קובץ האימג' של המכונה מוגדרת מדיניות בנושא קובצי אימג' מהימנים, צריך להוסיף את
projects/compute-image-importלרשימת בעלי התוכן המורשים. - אם מייבאים מכשיר וירטואלי מפרויקט אחר, אפשר לעיין במאמר בנושא ייבוא בין פרויקטים.
- בודקים את הדרישות של המכונה הווירטואלית במקור ושל קובץ ה-OVF במדריך של Compute Engine לייבוא מכונות וירטואליות.
- כדי לדעת איך לעמוד בדרישות לפני ייבוא תמונות של מכונות, אפשר לעיין במאמר דרישות מוקדמות לייבוא ולייצוא של תמונות VM.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
מגבלות
- אפשר לשתף תמונת מכונה בין פרויקטים. עם זאת, אין תמיכה ברשתות 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
מעלים את המכשיר הווירטואלי ל-Cloud Storage.
שולחים בקשת
POSTל-methodprojects.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 חיצוניות, פועלים לפי השלבים הבאים:
מוסיפים את המכשיר הווירטואלי ל-Cloud Storage.
תהליך הייבוא מחייב התקנה של מנהלי חבילות במערכת ההפעלה של קובץ האימג' של המכונה. יכול להיות שמנהלי החבילות האלה יצטרכו לשלוח בקשות למאגרי חבילות שנמצאים מחוץ ל- Google Cloud. כדי לאפשר גישה לעדכונים האלה, צריך להגדיר את Cloud NAT. למידע נוסף, קראו את המאמר יצירת הגדרת NAT באמצעות Cloud Router.
מגדירים גישה פרטית ל-Google. מידע נוסף זמין במאמר בנושא הגדרת גישה פרטית ל-Google.
מייבאים את תמונת המכונה באמצעות 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
מוסיפים את המכשיר הווירטואלי ל-Cloud Storage.
יוצרים חשבון שירות ומקצים לו את התפקידים המינימליים. מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירה וניהול של חשבונות שירות.
לכל הפחות, צריך להקצות לחשבון השירות של Compute Engine את התפקידים הבאים:
roles/compute.storageAdminroles/storage.objectViewer
התפקידים המינימליים האלה נדרשים לחשבון השירות שמצוין בדגל
--compute-service-account. מידע נוסף זמין במאמר הקצאת התפקידים הנדרשים לחשבון השירות של Compute Engine.משתמשים בפקודה
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
מוסיפים את המכשיר הווירטואלי ל-Cloud Storage.
יוצרים חשבון שירות ומקצים לו את התפקידים המינימליים. מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירת חשבונות שירות.
לכל הפחות, צריך להקצות לחשבון השירות של Compute Engine את התפקידים הבאים:
roles/compute.storageAdminroles/storage.objectViewer
אלה התפקידים המינימליים שנדרשים לחשבון השירות שצוין בארגומנט
-compute-service-account. מידע נוסף זמין במאמר הקצאת התפקידים הנדרשים לחשבון השירות של Compute Engine.שולחים בקשת
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.
-