אם אתם צריכים להעביר את נתוני דיסק האתחול של Compute Engine מחוץ לפרויקט Compute Engine, אתם יכולים לייצא תמונה של דיסק האתחול ל-Cloud Storage כקובץ tar.gz. אם אתם צריכים ליצור תמונה של דיסק לאחסון מתמיד כדי להשתמש בה כשאתם יוצרים דיסקים חדשים לאחסון מתמיד ב-Compute Engine, כדאי לקרוא את המאמר בנושא יצירת תמונה מותאמת אישית.
כדי לגבות או לשתף תמונה בהתאמה אישית, אפשר לייצא אותה ל-Cloud Storage. השיטה הזו מתאימה לשיתוף תמונות בודדות עם פרויקטים שאין להם גישה לתמונות שלכם. אפשר גם לשתף תמונות על ידי הענקת תפקיד משתמש תמונה ב-Compute Engine לתמונה או לפרויקט שמכיל אותה.
בתרשים הבא מוצגים כמה תהליכי עבודה אופייניים ליצירה ולשימוש חוזר בתמונה בהתאמה אישית.
לפני שמתחילים
- קוראים את הדף תמונות.
- אם בפרויקט שממנו רוצים לייצא את התמונה מוגדרת מדיניות של תמונות מהימנות, צריך להוסיף את
projects/compute-image-importואתprojects/compute-image-toolsלרשימת המפרסמים המורשים. - כדי לדעת איך לעמוד בדרישות לפני ייצוא תמונות, אפשר לעיין במאמר דרישות מוקדמות לייבוא ולייצוא של תמונות VM.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud
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 .
מגבלות
ההגבלות הבאות חלות על תהליך ייצוא התמונות.
מגבלות כלליות
אי אפשר לייצא תמונות ציבוריות שסופקו על ידי Google. אפשר לייצא רק תמונות שיצרתם או ייבאתם בעבר.
כשמייצאים תמונה, נוצרת סשן במכונה שממנה מייצאים את התמונה. הסשן הזה צריך להישאר פעיל עד שתהליך הייצוא יסתיים. אם הסשן מסתיים לפני שתהליך הייצוא מסתיים, או אם המשימה נכשלת, יכול להיות שמשאבים זמניים כמו דיסקים זמניים, מופעי מכונות וירטואליות או מאגרי אחסון לא יימחקו. במקרה כזה, צריך למחוק את המשאבים הזמניים האלה באופן ידני.
נוצרת קטגוריה של Cloud Storage בשם ${PROJECT}-daisy-bkt-${REGION} בשביל משאבים זמניים שנוצרו במהלך תהליך הייצוא באותו אזור או במספר אזורים כמו קטגוריית היעד. כדי לנהל את מחזור החיים של המשאבים האלה, אפשר לעיין במאמר בנושא ניהול מחזור החיים של אובייקטים.
תהליך הייצוא משתמש ב-Cloud Build כדי לייצא תמונה. סשן של Cloud Build נמשך עד 24 שעות. אם התמונה גדולה מאוד וייצוא שלה יימשך יותר מ-24 שעות, אפשר לייצא אותה באופן ידני.
מגבלות של VPC Service Controls
בפרויקטים שמוגנים באמצעות VPC Service Controls, אפשר להשתמש באחת מהשיטות הבאות:
מייצאים מאותו פרויקט שבו נמצאת התמונה. הערה: צריך להוסיף כלל ליציאה לפרויקט
compute-image-import(מספר71462206840). כדי לפעול לפי העיקרון של מתן ההרשאות המינימליות, מומלץ לאפשר רק את השירותartifactregistry.googleapis.comעם השיטות הבאות:artifactregistry.repositories.downloadArtifacts,artifactregistry.tags.get,artifactregistry.tags.listו-artifactregistry.versions.get.
ייצוא תמונה באמצעות פקודה אחת
ייצוא תמונה ל-Cloud Storage
אפשר לייצא את התמונות באמצעות Google Cloud המסוף, Google Cloud CLI או REST.
המסוף
נכנסים לדף Images במסוף Google Cloud .
לוחצים על שם התמונה שרוצים לייצא כדי לעבור לדף הפרטים של התמונה.
בדף הפרטים של התמונה, לוחצים על ייצוא כדי לפתוח את הדף ייצוא תמונה.
בדף ייצוא תמונה, בוחרים את פורמט הייצוא של התמונה.
לוחצים על עיון כדי לבחור את המיקום ב-Cloud Storage שאליו רוצים לייצא את התמונה.
בוחרים מיקום קיים ב-Cloud Storage לייצוא התמונה. לחלופין, פועלים לפי ההוראות ליצירת קטגוריה חדשה של Cloud Storage, ואז מזינים שם לקטגוריה החדשה של Cloud Storage.
אחרי שבוחרים אחסון בענן, בוחרים שם קובץ לתמונה המיוצאת. אפשר להשתמש בשם הקובץ שמוגדר כברירת מחדל או לבחור שם קובץ משלכם.
אחרי שבוחרים Cloud Storage ומזינים שם קובץ לתמונה, לוחצים על Select.
בדף ייצוא תמונה, לוחצים על ייצוא. אחרי שבוחרים באפשרות ייצוא, במסוף Google Cloud מוצג היסטוריית ייצוא התמונות, שבו אפשר לראות את תהליך ייצוא התמונות. כדי לראות פרטים נוספים על תהליך ייצוא התמונה, לוחצים על Cloud Build ID כדי לעבור לדף Image export details, שבו אפשר לראות ולהוריד את יומן ייצוא התמונה.
כדי לגשת לתמונה שיוצאה, עוברים לדף אחסון.
gcloud
הדרך המומלצת לייצא תמונה ל-Cloud Storage היא באמצעות הפקודה gcloud compute images export. בפקודה הזו נעשה שימוש ב-Daisy כדי לשרשר את השלבים הרבים שנדרשים לייצוא תמונה.
הפקודה gcloud compute images export מניחה שכבר יצרתם תמונה – למשל, באמצעות הפקודה gcloud compute images create.
מריצים את הפקודה הבאה ב-Google Cloud CLI:
gcloud compute images export \
--destination-uri DESTINATION_URI \
--image IMAGE_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
DESTINATION_URI: ה-URI של יעד Cloud Storage לקובץ התמונה המיוצא. -
IMAGE_NAME: השם של תמונת הדיסק לייצוא.
כברירת מחדל, התמונות מיוצאות בפורמט Compute Engine, שהוא קובץ disk.raw שדחוס ב-tar ו-gzip. כדי לייצא תמונות בפורמטים אחרים שנתמכים בכלי QEMU disk image, אפשר להשתמש בדגל --export-format. הפורמטים התקפים כוללים vmdk, vhdx, vpc, vdi ו-qcow2.
דוגמה
לדוגמה, הפקודה הבאה מייצאת תמונה בשם my-image מ-my-project לקטגוריה ב-Cloud Storage בשם my-bucket. כברירת מחדל, התמונה מיוצאת כקובץ disk.raw file ונדחסת לפורמט הקובץ tar.gz.
gcloud compute images export \
--destination-uri gs://my-bucket/my-image.tar.gz \
--image my-image \
--project my-projectלמידע על סימונים, אפשר לעיין במאמרי העזרה בנושא gcloud compute images export.
REST
שליחת בקשת POST ל-Cloud Build API.
POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
"timeout": "7200s",
"steps":[
{
"args":[
"-timeout=7000s",
"-source_image=SOURCE_IMAGE",
"-client_id=api",
"-format=IMAGE_FORMAT",
"-destination_uri=DESTINATION_URI"
],
"name":"gcr.io/compute-image-tools/gce_vm_image_export:release",
"env":[
"BUILD_ID=$BUILD_ID"
]
}
],
"tags":[
"gce-daisy",
"gce-daisy-image-export"
]
}
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שרוצים לייצא. -
SOURCE_IMAGE: השם של התמונה לייצוא. -
IMAGE_FORMAT: הפורמט של התמונה המיוצאת. פורמטים תקינים כולליםvmdk,vhdx,vpc,vdiו-qcow2. -
DESTINATION_URI: מיקום ה-URI ב-Cloud Storage שאליו רוצים לייצא את קובץ התמונה. לדוגמה,gs://my-bucket/my-exported-image.vmdk.
לערכים נוספים של args שאפשר לספק, אפשר לעיין בקטע בנושא דגלים אופציונליים בדף הייצוא של תמונת מכונה וירטואלית ב-GitHub.
דוגמה לתשובה
הדוגמה הבאה לתגובה דומה לפלט שמוחזר:
{
"name": "operations/build/myproject-12345/operation-1578608233418",
"metadata": {
"@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
"build": {
"id": "3a2055bc-ccbd-4101-9434-d376b88b8940",
"status": "QUEUED",
"createTime": "2019-10-02T18:59:13.393492020Z",
"steps": [
{
"name": "gcr.io/compute-image-tools/gce_vm_image_export:release",
"env": [
"BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
],
"args": [
"-timeout=7056s",
"-source_image=my-image",
"-client_id=api",
"-format=vmdk",
"-destination_uri=gs://my-bucket/my-exported-image.vmdk"
]
}
],
"timeout": "7200s",
"projectId": "myproject-12345",
"logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com",
"options": {
"logging": "LEGACY"
},
"logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456"
}
}יש כמה דרכים לעקוב אחרי הבנייה:
- מריצים בקשת projects.builds.get באמצעות
build-idשהוחזר. - בודקים את היומנים שמתארחים בכתובת
logUrlשסופקה.
ייצוא תמונה מפרויקט באמצעות חשבון שירות מותאם אישית של Compute Engine
במהלך ייצוא תמונה, נוצרת מכונה וירטואלית (VM) זמנית בפרויקט. צריך לאמת את כלי ייצוא התמונות במכונה הווירטואלית הזמנית הזו.
חשבון שירות הוא זהות שמצורפת למכונה וירטואלית. אפשר לגשת לאסימוני גישה של חשבון שירות דרך שרת המטא-נתונים של המכונה ולהשתמש בהם כדי לאמת את הכלי לייצוא תמונות במכונה הווירטואלית.
כברירת מחדל, תהליך הייצוא משתמש בסוכן השירות המוגדר כברירת מחדל של Compute Engine בפרויקט. עם זאת, אם חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine מושבת בפרויקט שלכם, או אם אתם רוצים להשתמש בחשבון שירות מותאם אישית של Compute Engine, אתם צריכים ליצור חשבון שירות ולהגדיר אותו לתהליך הייצוא.
אפשר לייצא את התמונות באמצעות Google Cloud CLI או REST.
gcloud
יוצרים חשבון שירות ומקצים לו את התפקידים המינימליים. מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירה וניהול של חשבונות שירות.
לפחות, צריך להקצות לחשבון השירות שצוין ב-Compute Engine את התפקידים הבאים:
roles/compute.storageAdminroles/storage.objectAdminroles/storage.admin
מידע נוסף זמין במאמר הענקת התפקידים הנדרשים לחשבון השירות של Compute Engine.
משתמשים בפקודה
gcloud compute images exportכדי לייצא את התמונה.gcloud compute images export \ --destination-uri DESTINATION_URI \ --image IMAGE_NAME \ --compute-service-account SERVICE_ACCOUNT_EMAILמחליפים את מה שכתוב בשדות הבאים:
-
DESTINATION_URI: ה-URI של יעד Cloud Storage לקובץ התמונה המיוצא. -
IMAGE_NAME: השם של תמונת הדיסק לייצוא. -
SERVICE_ACCOUNT_EMAIL: כתובת האימייל שמשויכת לחשבון השירות של Compute Engine שנוצר בשלב הקודם.
-
דוגמה
לדוגמה, הפקודה הבאה מייצאת תמונה בשם my-image מ-my-project לקטגוריה של Cloud Storage בשם my-bucket באמצעות חשבון שירות עם כתובת האימייל image-export-service-account@proj-12345.iam.gserviceaccount.com. כברירת מחדל, התמונה מיוצאת כקובץ disk.raw ונדחסת לפורמט הקובץ tar.gz.
gcloud compute images export \
--destination-uri gs://my-bucket/my-image.tar.gz \
--image my-image \
--project my-project \
--compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
למידע על סימונים, אפשר לעיין במאמרי העזרה בנושא gcloud compute images export.
REST
יוצרים חשבון שירות ומקצים לו את התפקידים המינימליים. מידע נוסף על יצירת חשבונות שירות זמין במאמר יצירה וניהול של חשבונות שירות.
לפחות, צריך להקצות לחשבון השירות שצוין ב-Compute Engine את התפקידים הבאים:
roles/compute.storageAdminroles/storage.objectAdminroles/storage.admin
מידע נוסף זמין במאמר הענקת התפקידים הנדרשים לחשבון השירות של Compute Engine.
ב-API, יוצרים בקשת
POSTל-Cloud Build API.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE", "-client_id=api", "-format=IMAGE_FORMAT", "-destination_uri=DESTINATION_URI", "-compute_service_account=SERVICE_ACCOUNT_EMAIL" ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שרוצים לייצא. -
SOURCE_IMAGE: השם של התמונה לייצוא. -
IMAGE_FORMAT: הפורמט של התמונה המיוצאת. הפורמטים התקפים כולליםvmdk,vhdx,vpc,vdiו-qcow2. -
DESTINATION_URI: מיקום ה-URI ב-Cloud Storage שאליו רוצים לייצא את קובץ התמונה. לדוגמה,gs://my-bucket/my-exported-image.vmdk. -
SERVICE_ACCOUNT_EMAIL: כתובת האימייל שמשויכת לחשבון השירות של Compute Engine שנוצר בשלב הקודם.
-
לערכים נוספים של args שאפשר לספק, אפשר לעיין בקטע בנושא דגלים אופציונליים בדף הייצוא של תמונת מכונה וירטואלית ב-GitHub.
ייצוא תמונה באמצעות VPC משותף
לפני שמייצאים תמונה שמשתמשת ב-VPC משותף, צריך להוסיף את התפקיד compute.networkUser לחשבון השירות של Cloud Build בפרויקט שממנו מייצאים תמונות. חשבון השירות שמשמש את Cloud Build תלוי בשאלה אם השתמשתם ב-Cloud Build בפרויקט לפני מאי 2024. אם כן, חשבון השירות של Cloud Build מדור קודם ישמש לבנייה עתידית. אחרת, נעשה שימוש בחשבון השירות שמוגדר כברירת מחדל של Compute Engine.
מידע נוסף זמין במאמר הענקת התפקידים הנדרשים לחשבון השירות של Cloud Build.
אפשר לייצא את התמונה באמצעות Google Cloud CLI או REST.
gcloud
משתמשים בפקודה gcloud compute images export כדי לייצא את התמונה.
gcloud compute images export \
--image IMAGE_NAME \
--destination-uri DESTINATION_URI \
--project PROJECT_ID \
--network NETWORK \
--subnet SUBNET \
--zone ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
IMAGE_NAME: השם של התמונה לייצוא. -
DESTINATION_URI: מיקום ה-URI ב-Cloud Storage שאליו רוצים לייצא את קובץ התמונה. -
PROJECT_ID: מזהה הפרויקט שבו נמצאת התמונה. -
NETWORK: הנתיב המלא אל רשת VPC משותפת. לדוגמה:projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
SUBNET: אופציונלי. הנתיב המלא לרשת משנה של VPC משותף. לדוגמה:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.הגדרת המצב הזה תלויה במצב רשת ה-VPC.
- אם רשת ה-VPC משתמשת במצב מדור קודם, אל תציינו רשת משנה.
- אם רשת ה-VPC פועלת במצב אוטומטי, אפשר לא לציין את תת-הרשת.
- אם רשת ה-VPC משתמשת במצב מותאם אישית, צריך לציין את השדה הזה.
ZONE: אופציונלי. האזור שבו רוצים להשתמש לייצוא. האזור הזה חייב להיות זהה לאזור של רשת המשנה. לדוגמה, אםSUBNETנמצא באזורus-west1, אזור הייצוא חייב להיות אחד מהאפשרויות הבאות:us-west1-a, us-west1-bאוus-west1-c.אם ציינתם
SUBNET, אתם צריכים לציין גם את האזור.
לדוגמה, הפקודה הבאה מייצאת תמונה בשם example-image מ-my-project לקטגוריה ב-Cloud Storage בשם my-bucket. בדוגמה הזו, רשת הענן הווירטואלי הפרטי (my-shared-vp) משתמשת ברשת משנה בהתאמה אישית (my-custom-subnet). כברירת מחדל, התמונה מיוצאת כקובץ disk.raw והיא דחוסה בפורמט הקובץ tar.gz.
פקודה לדוגמה
gcloud compute images export \
--image example-image \
--destination-uri gs://my-bucket/my-image.tar.gz \
--project my-project \
--network projects/my-vpc-project/global/networks/my-shared-vpc \
--subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-custom-subnet \
--zone us-west1-c
REST
מוסיפים את התמונה ל-Cloud Storage.
ב-API, יוצרים בקשת
POSTל-Cloud Build API.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE", "-client_id=api", "-format=IMAGE_FORMAT", "-destination_uri=DESTINATION_URI", "-network=NETWORK", "-subnet=SUBNET", "-zone=ZONE" ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שרוצים לייצא. -
SOURCE_IMAGE: השם של התמונה לייצוא. -
IMAGE_FORMAT: הפורמט של התמונה המיוצאת. הפורמטים התקפים כולליםvmdk,vhdx,vpc,vdiו-qcow2. -
DESTINATION_URI: מיקום ה-URI ב-Cloud Storage שאליו רוצים לייצא את קובץ התמונה. לדוגמה,gs://my-bucket/my-exported-image.vmdk. -
NETWORK: הנתיב המלא לרשת VPC משותפת. לדוגמה:projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
SUBNET: הנתיב המלא אל רשת משנה משותפת של VPC. לדוגמה:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.הגדרת המצב הזה תלויה במצב של רשת ה-VPC.
- אם רשת ה-VPC משתמשת במצב מדור קודם, אל תציינו רשת משנה.
- אם רשת ה-VPC פועלת במצב אוטומטי, אפשר לא לציין את רשת המשנה.
- אם רשת ה-VPC משתמשת במצב מותאם אישית, צריך לציין את השדה הזה.
ZONE: האזור שבו רוצים להשתמש לייצוא. האזור הזה חייב להיות זהה לאזור של רשת המשנה. לדוגמה, אםSUBNETנמצא באזורus-west1, אזור הייצוא חייב להיות אחד מהאפשרויות הבאות:us-west1-a, us-west1-bאוus-west1-c.ברוב המקרים, ציון אזור הוא אופציונלי. אם מציינים את
SUBNET, צריך לציין את אזור הזמן.
לערכים נוספים של
argsשאפשר לספק, אפשר לעיין בקטע בנושא דגלים אופציונליים בדף הייצוא של תמונת מכונה וירטואלית ב-GitHub.-
יצירה וייצוא של תמונה באופן ידני
אם הפקודות gcloud compute images create ו-gcloud compute images export לא מתאימות לצרכים שלכם, אתם יכולים ליצור ולייצא תמונה באופן ידני ממכונה של Compute Engine. התהליך הזה כולל שלבים נפרדים ליצירת תמונה ואז לייצוא שלה.
בדוגמה הבאה, שימו לב שהדיסק שנוצר נקרא image-disk.
כדי ליצור ולייצא תמונה:
אופציונלי: עוצרים את המופע שאליו מצורף הדיסק לפני שיוצרים את ה-snapshot. הפסקת המכונה מבטיחה את תקינות התוכן בדיסק בתמונת המצב.
יוצרים קובץ snapshot של הדיסק. נותנים לתמונת המצב את השם
image-snapshot.gcloud compute disks snapshot DISK_NAME \ --snapshot-names image-snapshotמחליפים את
DISK_NAMEבשם הדיסק שרוצים להשתמש בו כדי ליצור את ה-snapshot. אפשר למצוא את שם הדיסק על ידי הצגת רשימת הדיסקים.כדי ליצור דיסק חדש בשם
image-diskבאמצעות ה-snapshotimage-snapshot, מריצים את הפקודה הבאה:gcloud compute disks create image-disk \ --source-snapshot image-snapshotיוצרים דיסק זמני בשם
temporary-diskכדי לאחסן את הקובץtar, ומציינים אתSIZEשל הדיסק כך שיהיה גדול ב-50% לפחות מדיסק התמונה.אחר כך אפשר לנתק את הדיסק ולמחוק אותו.
gcloud compute disks create temporary-disk \ --size SIZE
SIZEהוא הגודל, בגיגה-בייט או בטרה-בייט, של הדיסק הזמני. לדוגמה, מציינים100GBכדי ליצור דיסק בנפח 100 גיגה-בייט.יוצרים מכונה ומפעילים את ההיקף
storage-rwבמכונה. בנוסף, צריך לצרף אתimage-diskואתtemporary-diskלמופע כדיסקים משניים עם מאפייניdevice-nameספציפיים. מחליפים אתVM_NAMEבשם המכונה שרוצים ליצור.gcloud compute instances create VM_NAME \ --scopes storage-rw \ --disk name=image-disk,device-name=image-disk \ --disk name=temporary-disk,device-name=temporary-diskשימו לב שאתם מעבירים היקפי הרשאות של חשבון שירות כדי שתוכלו להעלות את הקובץ ל-Cloud Storage בשלבים הבאים.
במקרה הצורך, אפשר לעיין בפרטים על הפעלת מופע חדש.
מתחברים למכונה. מחליפים את
VM_NAMEבשם המכונה שאליה רוצים להתחבר.gcloud compute ssh VM_NAME
מפרמטים את הדיסק הזמני ומעלים אותו. פירמוט הדיסק מוחק את התוכן של הדיסק הזמני.
sudo mkdir /mnt/tmp
sudo mkfs.ext4 -F /dev/disk/by-id/google-temporary-disk
sudo mount -o discard,defaults /dev/disk/by-id/google-temporary-disk /mnt/tmp
אופציונלי: מעלים את דיסק התמונה ומבצעים שינויים נוספים לפני שיוצרים את הקובץ
tar. לדוגמה, יכול להיות שתרצו למחוק קבצים קיימים מהספרייה/homeאם אתם לא רוצים שהם יהיו חלק מהתמונה. מבצעים Mount למחיצות בדיסק שרוצים לשנות, משנים את הקבצים בדיסק שרוצים לשנות, ואז מבטלים את ה-Mount של הדיסק כשמסיימים.יוצרים ספרייה שאליה אפשר לטעון את הדיסק או המחיצה.
sudo mkdir /mnt/image-disk
משתמשים בפקודה
lsכדי לקבוע איזה דיסק או מחיצת דיסק צריך לטעון.ls /dev/disk/by-id/
הפקודה מדפיסה רשימה של מזהי דיסקים ומחיצות. לדוגמה, לדיסק הבא יש טבלת מחיצות עם מחיצה אחת. המזהה
google-image-diskמצביע על הדיסק המלא שממנו רוצים ליצור תמונה. המזההgoogle-image-disk-part1מצביע על המחיצה הראשונה בדיסק הזה. אם צריך לבצע שינויים בדיסק, מעלים את המחיצה ואז יוצרים את התמונה מהדיסק המלא.google-image-disk google-image-disk-part1
מפעילים את הכונן או המחיצה. אם בדיסק יש טבלת מחיצות, צריך לטעון את המחיצות הנפרדות של הדיסק. לדוגמה, mount
google-image-disk-part1.sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk
לחלופין, אם הדיסק שלכם הוא בפורמט RAW ללא טבלת מחיצות, צריך לטעון את הדיסק המלא
google-image-disk.sudo mount /dev/disk/by-id/google-image-disk /mnt/image-disk
משנים את הקבצים בספרייה
/mnt/image-diskכדי להגדיר את הקבצים בדיסק. לדוגמה, אפשר להסיר את הקובץ/mnt/image-disk/home/[USER]/.ssh/authorized_keysכדי למנוע שיתוף של מפתחות ה-SSH.אחרי שמסיימים לשנות את הקבצים, מבטלים את הטעינה של הדיסק.
sudo umount /mnt/image-disk/
יוצרים קובץ
tarשל התמונה.אחרי שמסיימים להתאים אישית את הקבצים בדיסק התמונה, יוצרים קובץ דיסק raw בדיסק הזמני. השם של תמונת הדיסק הגולמית חייב להיות disk.raw:
sudo dd if=/dev/disk/by-id/google-image-disk of=/mnt/tmp/disk.raw bs=4096
לאחר מכן יוצרים את קובץ
tar.gz:cd /mnt/tmp
sudo tar czvf myimage.tar.gz disk.raw
הפקודה הזו יוצרת תמונה של המופע במיקום הבא:
/mnt/tmp/myimage.tar.gz
מעלים את התמונה ל-Cloud Storage.
כדי להעלות את הקובץ
tarל-Cloud Storage, משתמשים ב-Google Cloud CLI שמותקן מראש במופע.יוצרים מאגר באמצעות ה-CLI של gcloud.
לפני שיוצרים את הקטגוריה, חשוב לעיין בהנחיות לבחירת שמות לקטגוריות ולאובייקטים. לאחר מכן, יוצרים את הקטגוריה באמצעות הפקודה הבאה. מחליפים את
BUCKET_NAMEבשם הקטגוריה שרוצים ליצור.me@example-instance:~$ gcloud storage buckets create gs://BUCKET_NAMEמעתיקים את הקובץ לקטגוריה החדשה. מחליפים את
BUCKET_NAMEבשם הקטגוריה שאליה רוצים להעתיק את הקובץ.me@example-instance:~$ gcloud storage cp /mnt/tmp/myimage.tar.gz gs://BUCKET_NAME
הקובץ יוצא ל-Cloud Storage. עכשיו אפשר לשתף את התמונה עם אנשים אחרים, או להשתמש בקובץ tar כדי להוסיף תמונה חדשה לפרויקט במסוףGoogle Cloud .
המאמרים הבאים
- שיתוף תמונות באמצעות תפקיד המשתמש 'תמונות'
- מידע נוסף על שיטות הייבוא שזמינות ל-Compute Engine