אם אתם צריכים להעביר את נתוני דיסק האתחול של Compute Engine מחוץ לפרויקט של Compute Engine, אתם יכולים לייצא קובץ אימג' של דיסק אתחול ל-Cloud Storage כקובץ tar.gz. אם אתם צריכים ליצור קובץ אימג' של דיסק לאחסון מתמיד כדי להשתמש בו כשאתם יוצרים דיסקים חדשים לאחסון מתמיד ב-Compute Engine, קראו את המאמר יצירת קובץ אימג' בהתאמה אישית.
כדי לגבות או לשתף תמונה בהתאמה אישית, אתם יכולים לייצא אותה ל-Cloud Storage. השיטה הזו מתאימה לשיתוף של תמונות ספציפיות עם פרויקטים שאין להם גישה לתמונות שלכם. לחלופין, אתם יכולים לשתף תמונות על ידי הקצאת התפקיד "משתמש בתמונות של Compute Engine" לתמונה או לפרויקט שמכיל אותה.
בתרשים הבא מוצגים כמה תהליכי עבודה אופייניים ליצירה ולשימוש חוזר בתמונה בהתאמה אישית.
לפני שמתחילים
- קוראים את הדף תמונות.
- אם בפרויקט שממנו רוצים לייצא את קובץ האימג' מוגדרת מדיניות בנושא קובצי אימג' מהימנים, צריך להוסיף את
projects/compute-image-importלרשימת בעלי האפליקציות המורשים. - כדי לדעת איך לעמוד בדרישות לפני ייצוא של קובצי אימג', קראו את המאמר דרישות מוקדמות לייבוא ולייצוא של קובצי אימג' של מכונות וירטואליות.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-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 .
לוחצים על שם התמונה שרוצים לייצא כדי לעבור לדף הפרטים שלה.
בדף פרטי התמונה, לוחצים על Export כדי לפתוח את הדף Export Image.
בדף Export image, בוחרים את הפורמט של קובץ התמונה ב-Export format.
לוחצים על Browse ובוחרים את המיקום ב-Cloud Storage שאליו רוצים לייצא את קובץ האימג'.
בוחרים מיקום קיים ב-Cloud Storage כדי לייצא את קובץ האימג'. לחלופין, פועלים לפי ההוראות ליצירת קטגוריה חדשה של Cloud Storage, ואז מזינים שם לקטגוריה החדשה.
אחרי שבוחרים את Cloud Storage, בוחרים שם לקובץ של התמונה שמייצאים. אפשר להשתמש בשם הקובץ שמוגדר כברירת מחדל או לבחור שם קובץ משלכם.
אחרי שבוחרים קטגוריה ב-Cloud Storage ומזינים שם לקובץ התמונה, לוחצים על Select.
בדף Export image, לוחצים על Export. אחרי שבוחרים באפשרות Export, במסוף Google Cloud מוצג הדף Image export history שבו אפשר לראות את תהליך הייצוא של קובץ האימג'. כדי לקבל פרטים נוספים על תהליך הייצוא של קובץ האימג', לוחצים על Cloud Build ID כדי לעבור לדף Image export details, שבו אפשר לראות ולהוריד את יומן הייצוא של קובץ האימג'.
נכנסים לדף Storage כדי לגשת לתמונה שיוצאה.
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, אפשר להשתמש בדגל --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-import/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 של ייצוא קובץ אימג' של VM.
דוגמה לתשובה
התגובה לדוגמה הבאה דומה לפלט שמוחזר:
{
"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-import/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"
}
}יש כמה דרכים לעקוב אחרי ה-build:
- מריצים בקשת 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.. כברירת מחדל, התמונה מיוצאת כקובץ 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.
למידע על דגלים, עיינו במאמרי העזרה של 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-import/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 של ייצוא קובץ אימג' של VM.
ייצוא תמונה באמצעות VPC משותף
לפני שאתם מייצאים קובץ אימג' שמשתמש ב-VPC משותף, אתם צריכים להוסיף את התפקיד compute.networkUser לחשבון השירות של Cloud Build בפרויקט שממנו אתם מייצאים קובצי אימג'. חשבון השירות שמשמש ל-Cloud Build תלוי בשאלה אם השתמשתם ב-Cloud Build בפרויקט לפני מאי 2024. אם כן, חשבון השירות הקודם של Cloud Build משמש ל-builds עתידיים. אחרת, המערכת משתמשת בחשבון השירות שמוגדר כברירת מחדל ב-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-import/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 של ייצוא קובץ אימג' של VM.-
יצירה וייצוא של קובץ אימג' באופן ידני
אם הפקודות 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-snapshotכדי ליצור דיסק חדש בשםimage-diskבאמצעות הפקודה הבאה: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כדי ליצור דיסק בנפח 100GB.יוצרים מכונה ומפעילים בה את ההיקף
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יהיו חלק מהתמונה, אתם יכולים למחוק אותם. מפעילים את מחיצות הדיסק שצריך לשנות, משנים את הקבצים בדיסק שצריך לשנות, ואז מבטלים את הפעלת הדיסק כשמסיימים.יוצרים ספרייה שבה אפשר לטעון את הדיסק או המחיצה.
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
מגדירים את הדיסק או המחיצה. אם לדיסק יש טבלת מחיצות, צריך לטעון את המחיצות הנפרדות של הדיסק. לדוגמה, טעינת
google-image-disk-part1.sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk
לחלופין, אם הדיסק בפורמט גולמי ללא טבלת מחיצות, צריך לטעון את כל הדיסק
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של התמונה.אחרי שמסיימים להתאים אישית את הקבצים בדיסק של קובץ האימג', יוצרים קובץ דיסק גולמי בדיסק הזמני. השם של קובץ האימג' הגולמי של הדיסק חייב להיות 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 .