מאפייני אורח הם סוג של מטא נתונים מותאמים אישית שאפליקציות שפועלות במכונות של Compute Engine משתמשות בהם כדי לקרוא ולכתוב כמויות קטנות של נתונים. המאפיינים האלה מספקים מנגנון שמאפשר לאפליקציות לאותת על סטטוס, לפרסם הגדרות או לדווח על מידע לגבי מלאי. אפשר לגשת לנתונים האלה גם בתוך המכונה וגם מחוץ לה, ולהשתמש בהם כדי:
- ניהול ותזמור של עומסי עבודה
- ניהול מערכות הפעלה של אורחים
- פתרון בעיות בהגדרות של מכונות וירטואליות
לפני שמתחילים
- במכונות וירטואליות של Windows Server, צריך להשתמש ב-PowerShell 3.0 ואילך.
מומלץ להשתמש ב-
ctrl+vכדי להדביק את בלוקי הקוד שהועתקו. -
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.
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 .
התפקידים הנדרשים
ההרשאות או התפקידים הנדרשים תלויים בשאלה אם אתם מבצעים משימות מתוך ה-VM או מחוץ לו.
בתוך ה-VM
אם אתם מגדירים, שולחים שאילתות או מוחקים את מאפייני האורח מתוך המכונה הווירטואלית, אתם צריכים רק את התפקידים וההרשאות לחיבור למכונה הווירטואלית. כל תהליך שפועל במכונה הווירטואלית יכול לכתוב לערכים של מאפייני האורח, כולל סקריפטים ואפליקציות שאין להם הרשאות ברמת sudo או מנהל מערכת.
לפעולות קריאה וכתיבה מתוך מכונה וירטואלית, שרת המטא-נתונים מספק אימות והרשאה אוטומטיים ברמת המכונה. כל מכונה וירטואלית יכולה לקרוא או לכתוב רק בשרת המטא-נתונים שלה. מכונות וירטואליות אחרות לא יכולות לגשת לשרת המטא-נתונים של מכונה וירטואלית אחרת.
מחוץ ל-VM
כדי להפעיל מאפייני אורח או כדי להציג מאפייני אורח מחוץ למכונה הווירטואלית באמצעות Google Cloud CLI או REST, צריך את התפקידים וההרשאות הבאים: אי אפשר להגדיר או למחוק מאפייני אורח מחוץ למכונה וירטואלית.
כדי לוודא שלמשתמש או לחשבון השירות שלכם יש את ההרשאות הנדרשות להפעלה או להצגה של מאפייני אורח, צריך לבקש מהאדמין להקצות למשתמש או לחשבון השירות את תפקיד ה-IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) במכונה הווירטואלית או בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות להפעלה או לצפייה במאפייני האורחים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להפעיל או להציג מאפייני אורחים, נדרשות ההרשאות הבאות:
-
כדי להפעיל מאפייני אורח:
compute.instances.setMetadataבמכונה הווירטואלית או בפרויקט -
כדי לראות את מאפייני האורח:
compute.instances.getGuestAttributesבמכונה הווירטואלית או בפרויקט
יכול להיות שהאדמין יוכל גם להעניק למשתמש או לחשבון השירות שלכם את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מתי כדאי להשתמש במאפייני אורח
השתמשו במאפייני אורחים רק בתרחישי שימוש שדורשים כמויות קטנות של נתונים שלא משתנים לעיתים קרובות. תרחישי השימוש הטובים ביותר למאפייני אורחים הם בעלי המאפיינים הבאים:
- הגודל המקסימלי של כל ערך מאפיין הוא 256KiB.
- הגודל המקסימלי של כל מפתח מאפיין הוא 128 בייטים.
- מספר השאילתות מוגבל ל-10 שאילתות לכל היותר בדקה לכל מכונה וירטואלית.
- השאילתות לא חורגות מפרץ של 3 שאילתות לשנייה. אם חורגים מהקצב המקסימלי הזה, יכול להיות ש-Compute Engine יסיר באופן שרירותי מאפייני אורח שנמצאים בתהליך כתיבה. הסרת הנתונים הזו נדרשת כדי להבטיח שניתן יהיה לכתוב נתוני מערכת קריטיים אחרים בשרת.
מאפייני אורח מתאימים למצבים שבהם צריך לפרסם נתונים לא תכופים ובנפח נמוך. לדוגמה, מאפייני אורחים מתאימים לתרחישים הבאים:
- סקריפטים לטעינה בזמן ההפעלה שיכולים לסמן אתחול מוצלח על ידי הגדרת ערך סטטוס מותאם אישית במאפייני האורח.
- סוכני ניהול הגדרות שיכולים לפרסם את השם והגרסה של מערכת ההפעלה של האורח במאפייני האורח.
- סוכני ניהול מלאי שיכולים לפרסם רשימה של חבילות שהותקנו במכונה וירטואלית למאפייני אורח.
- תוכנה לניהול עומסי עבודה שיכולה לסמן את השלמת הפעולה במכונה האורחת למישור הבקרה של התוכנה, על ידי הגדרת ערך סטטוס מותאם אישית במאפיינים של המכונה האורחת.
מאפייני אורח לא מחליפים את הזרמת האירועים, את Pub/Sub או צורות אחרות של מאגרי נתונים ומאגרי הגדרות.
מאפייני אורחים ושירותים Google Cloud אחרים
שירותים אחרים של Google Cloud משתמשים במאפיינים של האורחים באופן הבא:
- אבטחת SSH: אם התכונה 'מאפייני אורח' מופעלת והתכונה 'כניסה למערכת ההפעלה' מושבתת, סביבת האורח וה-CLI של gcloud משתמשים במאפייני אורח כדי לשפר את אבטחת ה-SSH. הם עושים זאת באמצעות Google API כדי לאחזר מפתחות מארח לפני שמתחברים ל-VM באמצעות SSH.
- VM Manager: הסוכן של OS Config מפרסם נתונים של מערכת ההפעלה במאפייני האורח.
כדי לבדוק את רשומות המטא-נתונים שמאוחסנות בשירותים האלה, אפשר לעיין במאמר מפתחות מטא-נתונים מוגדרים מראש של מאפייני אורח.
הפעלת מאפייני אורח במכונה הווירטואלית
כברירת מחדל, מאפייני האורחים מושבתים. כדי להפעיל את מאפייני האורח, צריך להגדיר את ערכי המטא-נתונים הנדרשים במכונות הווירטואליות האישיות או במטא-נתונים ברמת הפרויקט:
המסוף
מגדירים את enable-guest-attributes במטא-נתונים של המכונה כשיוצרים מכונה וירטואלית:
נכנסים לדף Create an instance במסוף Google Cloud .
מציינים את פרטי המכונה הווירטואלית.
מרחיבים את הקטע Advanced options ומבצעים את הפעולות הבאות:
- מרחיבים את הקטע ניהול.
בקטע Metadata (מטא-נתונים), לוחצים על Add item (הוספת פריט) ומוסיפים את רשומות המטא-נתונים הבאות:
- מקרא:
enable-guest-attributes - ערך:
TRUE
- מקרא:
כדי ליצור את המכונה הווירטואלית (VM), לוחצים על האפשרות Create.
מגדירים את enable-guest-attributes במטא-נתונים ברמת הפרויקט כדי שההגדרה תחול על כל המכונות הווירטואליות בפרויקט:
נכנסים לדף Metadata במסוף Google Cloud .
לוחצים על Edit.
מוסיפים רשומה של מטא-נתונים שבה המפתח הוא
enable-guest-attributesוהערך הואTRUE. לחלופין, אפשר להגדיר את הערךFALSEכדי להשבית את התכונה.לוחצים על שמירה כדי להחיל את השינויים.
הגדרת enable-guest-attributes במטא-נתונים של מכונה וירטואלית קיימת:
- נכנסים לדף VM instances במסוף Google Cloud .
- לוחצים על שם המכונה הווירטואלית שרוצים להגדיר עבורה את ערך המטא-נתונים.
- בחלק העליון של דף פרטי המכונה, לוחצים על Edit כדי לערוך את הגדרות המכונה.
- בקטע Custom metadata, מוסיפים רשומת מטא-נתונים שבה המפתח הוא
enable-guest-attributesוהערך הואTRUE. לחלופין, אפשר להגדיר את הערךFALSEכדי להחריג את ה-VM מהתכונה. - בחלק התחתון של דף הפרטים של המופע, לוחצים על שמירה כדי להחיל את השינויים על מכונת ה-VM.
gcloud
מגדירים את enable-guest-attributes במטא-נתונים של המכונה כשיוצרים מכונה וירטואלית:
משתמשים בפקודה gcloud compute instances create ב-Google Cloud CLI ומגדירים את enable-guest-attributes=TRUE כדי להפעיל את מאפייני האורח. מחליפים את VM_NAME בשם של המכונה הווירטואלית.
gcloud compute instances create VM_NAME \
--metadata=enable-guest-attributes=TRUEמגדירים את enable-guest-attributes במטא-נתונים ברמת הפרויקט כדי שההגדרה תחול על כל המכונות הווירטואליות בפרויקט:
משתמשים בפקודה project-info add-metadata ב-Google Cloud CLI ומגדירים את enable-guest-attributes=TRUE כדי להפעיל את מאפייני האורח:
gcloud compute project-info add-metadata \
--metadata=enable-guest-attributes=TRUE
אפשרות אחרת היא להגדיר את enable-guest-attributes ל-FALSE כדי להשבית את מאפייני האורח.
הגדרת enable-guest-attributes במטא-נתונים של מכונה וירטואלית קיימת:
משתמשים בפקודה instances add-metadata ב-Google Cloud CLI ומגדירים את enable-guest-attributes=TRUE כדי להפעיל את מאפייני האורח. מחליפים את VM_NAME בשם של המכונה הווירטואלית.
gcloud compute instances add-metadata VM_NAME \
--metadata=enable-guest-attributes=TRUEלחלופין, אפשר להגדיר את enable-guest-attributes לערך FALSE כדי למנוע מהמכונה הווירטואלית להשתמש במאפייני אורח.
הגדרת מאפייני אורח
כל תהליך שפועל במופע של מכונה וירטואלית יכול לכתוב לערכים של מאפייני האורח, כולל סקריפטים ואפליקציות שאין להם הרשאות ברמת sudo או ברמת האדמין. משתמשים או חשבונות שירות מחוץ למכונה הווירטואלית לא יכולים לכתוב לערכי המטא-נתונים של מאפייני האורח.
מכונות וירטואליות של Linux
לדוגמה, אפשר להשתמש בבקשת curl מתוך המכונה הווירטואלית כדי לכתוב ערך לנתיב המטא-נתונים guest-attributes:
curl -X PUT --data "VALUE" http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE: קיבוץ לוגי שלKEY. מאפייני האורח חייבים לכלול מרחב שמות. -
VALUE: הערך שרוצים לכתוב. -
KEY: הנתיב למטא-נתונים בתוךguest-attributesשבו הערך מאוחסן.
בשדות NAMESPACE ו-KEY אפשר להשתמש רק באותיות, בספרות, בקו תחתון (_) ובמקף (-).
מכונות וירטואליות של Windows
לדוגמה, אפשר להשתמש בבקשת Invoke-RestMethod מתוך המכונה הווירטואלית כדי לכתוב ערך לנתיב המטא-נתונים guest-attributes:
PS C:\>
$value = (Invoke-RestMethod `
-Method PUT -Body "VALUE" `
-Headers @{'Metadata-Flavor' = 'Google'} `
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
$value
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE: קיבוץ לוגי שלKEY. מאפייני האורח חייבים לכלול מרחב שמות. -
VALUE: הערך שרוצים לכתוב. -
KEY: הנתיב למטא-נתונים בתוךguest-attributesשבו הערך מאוחסן.
בשדות NAMESPACE ו-KEY אפשר להשתמש רק באותיות, בספרות, בקו תחתון (_) ובמקף (-).
קבלת מאפייני אורח
משתמשים או חשבונות שירות יכולים לקרוא מאפייני אורח מחוץ למכונה וירטואלית אם יש להם את התפקיד הנדרש. לחלופין, כל משתמש או אפליקציה במכונה הווירטואלית יכולים לקרוא את ערכי המטא-נתונים של אותה מכונה וירטואלית ספציפית.
כל תהליך שפועל במכונה הווירטואלית יכול לכתוב לערך של מאפייני האורח, כולל סקריפטים ואפליקציות שאין להם הרשאות ברמת sudo או ברמת אדמין.
שליחת שאילתה לשרת המטא-נתונים
כדי לשלוח שאילתות לגבי מאפייני אורח מתוך מכונה וירטואלית, פועלים לפי ההוראות הבאות.
מתחברים למכונה הווירטואלית.
שליחת שאילתה לגבי מאפייני האורחים.
מכונות וירטואליות של Linux
לדוגמה, אפשר להשתמש בבקשת
curlמתוך המכונה הווירטואלית כדי לקרוא ערך מנתיב המטא-נתוניםguest-attributes:curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE: מרחב השמות שלguest-attributesהמפתח שרוצים לשלוח לגביו שאילתה. -
KEY: הנתיב בתוךguest-attributesשממנו רוצים לקרוא את ערך המטא-נתונים.
לחלופין, אפשר להחזיר את כל ערכי המאפיינים של האורחים בבקשה אחת. מחליפים את
NAMESPACEבמרחב השמות של מפתחguest-attributesשרוצים לשלוח לגביו שאילתה.curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/ -H "Metadata-Flavor: Google"
מכונות וירטואליות של Windows
לדוגמה, אפשר להשתמש בבקשת
Invoke-RestMethodמתוך המכונה הווירטואלית כדי לקרוא ערך מנתיב המטא-נתוניםguest-attributes:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY") $valueמחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE: מרחב השמות שלguest-attributesהמפתח שרוצים לשלוח לגביו שאילתה. -
KEY: הנתיב בתוךguest-attributesשממנו רוצים לקרוא את ערך המטא-נתונים.
לחלופין, אפשר להחזיר את כל ערכי המאפיינים של האורחים בבקשה אחת. מחליפים את
NAMESPACEבמרחב השמות של מפתחguest-attributesשרוצים לשלוח לגביו שאילתה.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/") $value-
שימוש ב-Google Cloud CLI או ב-REST
כדי לראות את מאפייני האורח מחוץ למכונה הווירטואלית, פועלים לפי ההוראות הבאות.
gcloud
איך משתמשים ב-Google Cloud CLI כדי לקרוא את ערכי המטא-נתונים של מאפייני האורח של מכונה וירטואלית. לדוגמה, אפשר לאחזר את כל הערכים של מכונה וירטואלית באופן הבא:
gcloud compute instances get-guest-attributes VM_NAME \
--zone=ZONEכדי לאחזר את כל הערכים במרחב שמות מסוים, כוללים את הדגל --query-path ואת מרחב השמות שהגדרתם:
gcloud compute instances get-guest-attributes VM_NAME \
--query-path=NAMESPACE \
--zone=ZONEכדי לאחזר את כל הערכים במרחב שמות ספציפי, צריך לכלול את הדגל --query-path, את מרחב השמות ואת המפתח של הערך שהגדרתם:
gcloud compute instances get-guest-attributes VM_NAME \
--query-path=NAMESPACE/KEY \
--zone=ZONEמחליפים את מה שכתוב בשדות הבאים:
-
VM_NAME: שם המכונה הווירטואלית שממנה רוצים לקרוא את ערך המטא-נתונים של מאפיין האורח -
NAMESPACE: מרחב השמות של המפתחguest-attributesשרוצים לשלוח אליו שאילתה -
KEY: הנתיב במטא-נתונים שלguest-attributesשבו הערך מאוחסן -
ZONE: האזור שבו נמצאת המכונה הווירטואלית
REST
משתמשים בשיטה compute.instances.getguestattributes:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
ZONE: האזור שבו נמצאת המכונה הווירטואלית -
VM_NAME: השם של מכונת ה-VM שממנה רוצים לקרוא את ערך המטא-נתונים של מאפיין האורח -
NAMESPACE: מרחב השמות של המפתחguest-attributesשרוצים לשלוח אליו שאילתה -
KEY: הנתיב במטא-נתונים שלguest-attributesשבו הערך מאוחסן
כדי לאחזר את כל המפתחות של NAMESPACE, משמיטים את KEY:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE
כדי לאחזר את כל המפתחות בכל מרחב שמות במכונה הווירטואלית, משמיטים את NAMESPACE:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=
לחלופין, אם יש לכם אסימון OAuth, אתם יכולים להשתמש ב-curl:
curl -H "Authorization: Bearer OAUTH_TOKEN" https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY
מחליפים את מה שכתוב בשדות הבאים:
-
OAUTH_TOKEN: טוקן ה-OAuth שלכם -
PROJECT_ID: מזהה הפרויקט -
ZONE: האזור שבו נמצאת המכונה הווירטואלית -
VM_NAME: השם של מכונת ה-VM שממנה רוצים לקרוא את ערך המטא-נתונים של מאפיין האורח -
NAMESPACE: מרחב השמות של המפתחguest-attributesשרוצים לשלוח אליו שאילתה -
KEY: הנתיב במטא-נתונים שלguest-attributesשבו הערך מאוחסן
מחיקת מאפיינים של אורחים
כדי להסיר מאפייני אורח מתוך מכונה וירטואלית, פועלים לפי ההוראות הבאות.
מתחברים למכונה הווירטואלית.
מוחקים את מאפייני האורח.
מכונות וירטואליות של Linux
אפשר גם למחוק מאפייני אורח. לדוגמה, משתמשים בפקודה
curlכדי למחוק מפתח ספציפי:curl -X DELETE http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"
מחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE: מרחב השמות של מפתחguest-attributesשרוצים למחוק -
KEY: הנתיב בתוךguest-attributesשבו הערך מאוחסן
מכונות וירטואליות של Windows
אפשר גם למחוק מאפייני אורח. לדוגמה, כדי למחוק מפתח ספציפי, משתמשים בפקודה
Invoke-RestMethod:PS C:\> $value = (Invoke-RestMethod ` -Method DELETE ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY") $valueמחליפים את מה שכתוב בשדות הבאים:
-
NAMESPACE: מרחב השמות של מפתחguest-attributesשרוצים למחוק -
KEY: הנתיב בתוךguest-attributesשבו הערך מאוחסן
-
השבתת מאפייני משתמשים חיצוניים בארגון או בתיקייה
אם אתם לא רוצים שאף מכונה וירטואלית בארגון או בתיקייה תפעיל את התכונה 'מאפייני אורח', אתם יכולים לבטל את ההגדרה שלה ולהשבית אותה לגמרי.
מגדירים את המגבלה constraints/compute.disableGuestAttributesAccess בארגון או בתיקייה, ומחליפים את PROJECT_ID בשם הפרויקט:
gcloud resource-manager org-policies enable-enforce \
constraints/compute.disableGuestAttributesAccess \
--project=PROJECT_IDבמאמר שימוש באילוצים מוסבר איך מגדירים ומנהלים אילוצים בארגונים.
.