סקריפט לטעינה בזמן ההפעלה הוא קובץ שמבצע משימות במהלך תהליך ההפעלה של מכונה וירטואלית (VM). סקריפטים להפעלה יכולים לחול על כל המכונות הווירטואליות בפרויקט או על מכונה וירטואלית אחת. סקריפטים לטעינה בזמן ההפעלה שצוינו במטא-נתונים ברמת ה-VM מבטלים סקריפטים לטעינה בזמן ההפעלה שצוינו במטא-נתונים ברמת הפרויקט, וסקריפטים לטעינה בזמן ההפעלה מופעלים רק כשיש רשת זמינה. במאמר הזה מוסבר איך להשתמש בסקריפטים להפעלה במכונות וירטואליות של Linux. מידע על הוספת סקריפט לטעינה בזמן ההפעלה ברמת הפרויקט זמין במאמר gcloud compute project-info add-metadata.
בסקריפטים להפעלה של Linux, אפשר להשתמש בקובץ bash או בקובץ שאינו bash. כדי להשתמש בקובץ שאינו bash, צריך לציין את המפענח על ידי הוספת #! לחלק העליון של הקובץ. לדוגמה, כדי להשתמש בסקריפט לטעינה בזמן ההפעלה של Python 3, מוסיפים #! /usr/bin/python3 לחלק העליון של הקובץ.
אם מציינים סקריפט לטעינה בזמן ההפעלה באמצעות אחת מהפרוצדורות שמתוארות במסמך הזה, מערכת Compute Engine מבצעת את הפעולות הבאות:
העתקת הסקריפט לטעינה בזמן ההפעלה אל ה-VM
הגדרת הרשאות הרצה בסקריפט לטעינה בזמן ההפעלה
הסקריפט לטעינה בזמן ההפעלה מופעל כמשתמש
rootכשהמכונה הווירטואלית מופעלת
מידע על המשימות השונות שקשורות לסקריפטים להפעלה ועל המקרים שבהם צריך לבצע כל אחת מהן מופיע בסקירה הכללית.
דרישות מוקדמות
כדי להריץ סקריפטים שמאוחסנים במטא-נתונים במכונת VM, צריך להתקין ולהפעיל את סביבת האורח.
- סביבת האורח כוללת את סוכן האורח (לדוגמה, google-guest-agent ב-Linux) שקורא את תוכן הסקריפט או כתובת ה-URL ממטא-נתונים של המכונה ומתחיל את הביצוע.
- כל התמונות הציבוריות של Compute Engine מגיעות עם סביבת האורח שכבר מותקנת בהן.
- אם יוצרים אימג' מותאם אישית, צריך להתקין ידנית את סביבת האורח של Google כדי לוודא שהסקריפטים ממטא-נתונים וממאפיינים אחרים של Cloud de Confiance by S3NS פועלים בצורה תקינה.
לפני שמתחילים
- סקירה כללית על סקריפטים לטעינה בזמן ההפעלה
- מידע נוסף על שרת המטא-נתונים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS
gcloud
-
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud init
-
- הגדרת אזור ותחום כברירת מחדל
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
מפתחות מטא-נתונים לסקריפטים להפעלה ב-Linux
סקריפט לטעינה בזמן ההפעלה מועבר למכונה וירטואלית ממיקום שמוגדר על ידי מפתח מטא-נתונים. מפתח מטא-נתונים מציין אם הסקריפט לטעינה בזמן ההפעלה מאוחסן באופן מקומי, מאוחסן ב-Cloud Storage או מועבר ישירות למכונה הווירטואלית. יכול להיות שהמפתח של המטא נתונים שבו אתם משתמשים תלוי גם בגודל של סקריפט לטעינה בזמן ההפעלה.
בטבלה הבאה מפורטים מפתחות המטא-נתונים שאפשר להשתמש בהם בסקריפטים לטעינה בזמן ההפעלה ב-Linux, ומוסבר איזה מפתח צריך להגדיר בהתאם למיקום האחסון ולגודל של סקריפט לטעינה בזמן ההפעלה.
| מפתח מטא-נתונים | השתמש עבור |
|---|---|
startup-script |
העברת סקריפט לטעינה בזמן ההפעלה של Bash או סקריפט אחר שמאוחסן באופן מקומי או שנוסף ישירות, וגודלו עד 256KB |
startup-script-url |
העברת סקריפט bash או סקריפט אחר לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage וגודלו גדול מ-256KB.
המחרוזת שאתם מזינים כאן משמשת כמו שהיא להרצת gcloud storage. אם המחרוזת startup-script-url מכילה רווחים, אל תחליפו את הרווחים ב-%20 ואל תוסיפו מירכאות כפולות ("") למחרוזת startup-script-url. |
סדר הביצוע של סקריפטים להפעלה ב-Linux
אפשר להשתמש בכמה סקריפטים לטעינה בזמן ההפעלה. סקריפטים לטעינה בזמן ההפעלה שמאוחסנים באופן מקומי או שנוספו ישירות מופעלים לפני סקריפטים לטעינה בזמן ההפעלה שמאוחסנים ב-Cloud Storage. בטבלה הבאה מוצג סדר ההרצה של סקריפטים להפעלה ב-Linux, על סמך מפתח המטא-נתונים.
| מפתח מטא-נתונים | סדר הביצוע |
|---|---|
startup-script |
בפעם הראשונה בכל אתחול אחרי האתחול הראשוני |
startup-script-url |
שנייה במהלך כל אתחול אחרי האתחול הראשוני |
העברה ישירה של סקריפט לטעינה בזמן ההפעלה של Linux
אתם יכולים להוסיף את התוכן של סקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית כשאתם יוצרים אותה. בקטעים הבאים מוסבר איך ליצור מכונה וירטואלית עם סקריפט לטעינה בזמן ההפעלה שמתקין את Apache ויוצר דף אינטרנט בסיסי.
המסוף
העברת סקריפט לטעינה בזמן ההפעלה של Linux ישירות למכונה וירטואלית חדשה
נכנסים לדף Create an instance במסוף Cloud de Confiance .
כדי להשתמש במערכת הפעלה Linux:
בתפריט הניווט, לוחצים על מערכת הפעלה ואחסון.
לוחצים על Change.
בחלונית דיסק אתחול שמופיעה, בוחרים מערכת הפעלה של Linux.
כדי להוסיף ישירות סקריפט לטעינה בזמן ההפעלה של Linux:
בתפריט הניווט, לוחצים על מתקדם.
בקטע Automation, מזינים את הערך הבא בשדה סקריפט לטעינה בזמן ההפעלה:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF
אופציונלי: מציינים אפשרויות הגדרה אחרות. מידע נוסף מופיע במאמר אפשרויות הגדרה במהלך יצירת מכונה.
כדי ליצור את המכונה ולהפעיל אותה, לוחצים על Create.
העברת סקריפט לטעינה בזמן ההפעלה של Linux ישירות למכונה וירטואלית קיימת
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על שם המופע.
לוחצים על Edit.
בקטע אוטומציה, מוסיפים את התוכן של הסקריפט לטעינה בזמן ההפעלה.
אימות סקריפט לטעינה בזמן ההפעלה
אחרי שהמופע יופעל, תוכלו להציג את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו לחכות בערך דקה עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
gcloud
העברת סקריפט לטעינה בזמן ההפעלה של Linux ישירות למכונה וירטואלית חדשה
כדי להעביר את התוכן של סקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית כשיוצרים אותה, משתמשים בפקודה gcloud compute instances create הבאה.
gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata=startup-script='#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF'
מחליפים את VM_NAME בשם המכונה הווירטואלית.
העברת סקריפט לטעינה בזמן ההפעלה של Linux ישירות למכונה וירטואלית קיימת
כדי להוסיף את הסקריפט לטעינה בזמן ההפעלה ישירות למכונה וירטואלית קיימת, משתמשים בפקודה gcloud compute instances add-metadata הבאה:
gcloud compute instances add-metadata VM_NAME \
--zone=ZONE \
--metadata=startup-script='#! /bin/bash
apt update
apt -y install apache2
cat <<EOF > /var/www/html/index.html
<html><body><p>Linux startup script added directly.</p></body></html>
EOF'
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: השם של ה-VM
ZONE: האזור של המכונה הווירטואלית
אימות סקריפט לטעינה בזמן ההפעלה
אחרי שהמכונה הווירטואלית מופעלת, אפשר לראות את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו לחכות בערך דקה עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
REST
העברת סקריפט לטעינה בזמן ההפעלה של Linux ישירות למכונה וירטואלית חדשה
כשיוצרים מכונה וירטואלית, אפשר להעביר אליה ישירות את התוכן של סקריפט לטעינה בזמן ההפעלה באמצעות השיטה הבאה instances.insert.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
...
"networkInterfaces": [
{
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT"
}
]
}
],
"metadata": {
"items": [
{
"key": "startup-script",
"value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF"
}
]
},
...
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית.
העברת סקריפט לטעינה בזמן ההפעלה של Linux ישירות למכונה וירטואלית קיימת
כדי לקבל את הערך
metadata.fingerprintשל מכונת ה-VM, משתמשים בשיטהinstances.get:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: שם ה-VM.
מעבירים את הסקריפט לטעינה בזמן ההפעלה באמצעות הערך
fingerprint, יחד עם מפתח המטא-נתונים והערך של הסקריפט לטעינה בזמן ההפעלה, בקריאה לשיטהinstances.setMetadata:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF" } ], ... }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו נמצאת מכונת ה-VM.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: שם ה-VM.
FINGERPRINT: הערך
metadata.fingerprintשהתקבל באמצעות ה-methodinstances.get.
אימות סקריפט לטעינה בזמן ההפעלה
אחרי שהמכונה הווירטואלית מופעלת, אפשר לראות את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר. יכול להיות שתצטרכו לחכות בערך דקה עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
העברת סקריפט לטעינה בזמן ההפעלה של Linux מקובץ מקומי
אפשר לאחסן סקריפט לטעינה בזמן ההפעלה בקובץ מקומי בתחנת העבודה ולהעביר את הקובץ המקומי כמטא-נתונים למכונה וירטואלית כשיוצרים אותה. אי אפשר להשתמש בקבצים שמאוחסנים במכונות וירטואליות כסקריפטים להפעלה.
לפני שמעבירים סקריפט לטעינה בזמן ההפעלה של Linux מקובץ מקומי למכונה וירטואלית, צריך לבצע את הפעולות הבאות:
יוצרים קובץ מקומי לאחסון הסקריפט לטעינה בזמן ההפעלה.
שימו לב לנתיב היחסי מ-CLI של gcloud לסקריפט ההפעלה.
מוסיפים לקובץ את הסקריפט הבא לטעינה בזמן ההפעלה:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from a local file.</p></body></html> EOF
gcloud
העברת סקריפט לטעינה בזמן ההפעלה של Linux מקובץ מקומי למכונה וירטואלית חדשה
כדי ליצור מכונה וירטואלית ולהעביר את התוכן של קובץ מקומי לשימוש כסקריפט לטעינה בזמן ההפעלה, משתמשים בפקודה gcloud compute instances create עם הדגל --metadata-from-file.
gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: השם של ה-VM
FILE_PATH: הנתיב היחסי לקובץ של סקריפט ההפעלה
העברת סקריפט לטעינה בזמן ההפעלה של Linux מקובץ מקומי למכונה וירטואלית קיימת
כדי להעביר סקריפט לטעינה בזמן ההפעלה ל-VM קיים מקובץ מקומי, משתמשים בgcloud compute instances add-metadata
הפקודה הבאה:
gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata-from-file startup-script=FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: השם של ה-VM
ZONE: האזור של המכונה הווירטואלית
FILE_PATH: הנתיב היחסי לקובץ של סקריפט ההפעלה
אימות סקריפט לטעינה בזמן ההפעלה
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו לחכות כדקה עד שסקריפט ההפעלה של הדוגמה יסיים את הפעולה.
העברת סקריפט לטעינה בזמן ההפעלה של Linux מ-Cloud Storage
אפשר לאחסן סקריפט לטעינה בזמן ההפעלה ב-Cloud Storage ולהעביר אותו למכונה וירטואלית כשיוצרים אותה. אחרי שמוסיפים סקריפט לטעינה בזמן ההפעלה ל-Cloud Storage, מקבלים כתובת URL שאפשר להשתמש בה כדי להפנות לסקריפט לטעינה בזמן ההפעלה כשיוצרים מכונה וירטואלית.
לפני שמוסיפים סקריפט לטעינה בזמן ההפעלה מקטגוריה של Cloud Storage, צריך לבצע את הפעולות הבאות:
יוצרים קובץ לאחסון הסקריפט לטעינה בזמן ההפעלה. בדוגמה הזו נעשה שימוש בקובץ bash (
.sh).מוסיפים את הטקסט הבא לקובץ bash, שמתקין את Apache ויוצר דף אינטרנט פשוט:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from Cloud Storage.</p></body></html> EOF
השלכות על האבטחה
כברירת מחדל, לבעלי הפרויקט ולעורכי הפרויקט יש גישה לקבצים ב-Cloud Storage באותו פרויקט, אלא אם יש אמצעי בקרה מפורשים על הגישה שמונעים זאת.
אם הקטגוריה או האובייקט ב-Cloud Storage פחות מאובטחים מהמטא-נתונים, קיים סיכון להרחבת הרשאות אם הסקריפט להפעלה ישתנה וה-VM יופעל מחדש. הסיבה לכך היא שאחרי שהמכונה הווירטואלית מופעלת מחדש, סקריפט לטעינה בזמן ההפעלה פועל כ-
rootואז יכול להשתמש בהרשאות של חשבון השירות המצורף כדי לגשת למשאבים אחרים.
מגבלות
המסוף
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
נכנסים לדף Create an instance במסוף Cloud de Confiance .
כדי להשתמש במערכת הפעלה Linux:
בתפריט הניווט, לוחצים על מערכת הפעלה ואחסון.
בקטע מערכת הפעלה ואחסון, לוחצים על שינוי. לאחר מכן בוחרים מערכת הפעלה של Linux.
כדי לאפשר למופע לגשת לקטגוריה של Cloud Storage שמכילה את סקריפט לטעינה בזמן ההפעלה של Linux:
בתפריט הניווט, לוחצים על אבטחה.
ברשימה Service account בוחרים חשבון שירות שיש לו את התפקיד Storage Object Viewer (
roles/storage.objectViewer) ב-IAM בקטגוריה של Cloud Storage.
כדי להוסיף סקריפט לטעינה בזמן ההפעלה של Linux על ידי ציון קובץ ב-Cloud Storage:
בתפריט הניווט, לוחצים על מתקדם.
בקטע Metadata (מטא נתונים), לוחצים על Add item (הוספת פריט). יופיעו השדות מפתח וערך.
בשדה מפתח, מזינים
startup-script-url.בשדה Value מזינים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE URI של gcloud storage:
gs://BUCKET/FILEמחליפים את מה שכתוב בשדות הבאים:
BUCKET: השם של דלי ה-Cloud Storage שמכיל את קובץ סקריפט לטעינה בזמן ההפעלה
FILE: השם של קובץ הסקריפט לטעינה בזמן ההפעלה
- כתובת URL מאומתת:
אופציונלי: מציינים אפשרויות הגדרה אחרות. מידע נוסף מופיע במאמר אפשרויות הגדרה במהלך יצירת מכונה.
כדי ליצור את המכונה ולהפעיל אותה, לוחצים על Create.
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת
נכנסים לדף VM instances במסוף Cloud de Confiance .
לוחצים על שם המופע.
לוחצים על Edit.
בקטע מטא-נתונים, מוסיפים את הערכים הבאים:
מקרא:
startup-script-urlערך: המיקום ב-Cloud Storage של קובץ סקריפט לטעינה בזמן ההפעלה, באחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
gs://BUCKET/FILE
- כתובת URL מאומתת:
אימות סקריפט לטעינה בזמן ההפעלה
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, אפשר להציג את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כדקה עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
gcloud
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
מעבירים סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית כשיוצרים אותה באמצעות gcloud compute instances createהפקודה הבאה. כדי שהמכונה הווירטואלית תוכל לגשת ל-Cloud Storage, צריך להשתמש בערך storage-ro עבור האפשרות --scope.
gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --scopes=storage-ro \ --metadata=startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: שם ה-VM.
CLOUD_STORAGE_URL: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באמצעות אחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
gs://BUCKET/FILE
- כתובת URL מאומתת:
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת
כדי להעביר סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת, משתמשים בפקודה gcloud compute instances add-metadata הבאה:
gcloud compute instances add-metadata VM_NAME \
--zone=ZONE \
--metadata startup-script-url=CLOUD_STORAGE_URL
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: שם ה-VM.
ZONE: האזור של המכונה הווירטואלית.
CLOUD_STORAGE_URL: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באמצעות אחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
gs://BUCKET/FILE
- כתובת URL מאומתת:
אימות סקריפט לטעינה בזמן ההפעלה
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, אפשר להציג את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כדקה עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
REST
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית חדשה
מעבירים סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית כשיוצרים אותה באמצעות השיטה instances.insert הבאה. בשדה scopes מוסיפים https://www.googleapis.com/auth/devstorage.read_only כדי שהמכונה הווירטואלית תוכל לגשת ל-Cloud Storage.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
...
"networkInterfaces": [
{
"accessConfigs": [
{
"type": "ONE_TO_ONE_NAT"
}
]
}
],
"serviceAccounts": [
{
"email": "default",
"scopes": [
"https://www.googleapis.com/auth/devstorage.read_only"
]
}
],
"metadata": {
"items": [
{
"key": "startup-script-url",
"value": "CLOUD_STORAGE_URL"
}
]
},
...
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.
ZONE: האזור שבו רוצים ליצור את המכונה הווירטואלית.
CLOUD_STORAGE_URL: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באמצעות אחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
gs://BUCKET/FILE
- כתובת URL מאומתת:
העברת סקריפט לטעינה בזמן ההפעלה שמאוחסן ב-Cloud Storage למכונה וירטואלית קיימת
כדי לקבל את הערך
metadata.fingerprintשל מכונת ה-VM, משתמשים בשיטהinstances.get:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט
ZONE: האזור של המכונה הווירטואלית
VM_NAME: השם של ה-VM
מעבירים את הסקריפט לטעינה בזמן ההפעלה באמצעות הערך
fingerprint, יחד עם מפתח המטא-נתונים והערך של הסקריפט לטעינה בזמן ההפעלה, בקריאה לשיטהinstances.setMetadata:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.
ZONE: האזור של המכונה הווירטואלית.
VM_NAME: שם ה-VM.
FINGERPRINT: הערך
metadata.fingerprintשהתקבל באמצעות ה-methodinstances.get.CLOUD_STORAGE_URL: ערך המטא-נתונים. מגדירים את המיקום של קובץ הסקריפט לטעינה בזמן ההפעלה ב-Cloud Storage באמצעות אחד מהפורמטים הבאים:
- כתובת URL מאומתת:
https://storage.googleapis.com/BUCKET/FILE - URI של gcloud storage:
gs://BUCKET/FILE
- כתובת URL מאומתת:
אימות סקריפט לטעינה בזמן ההפעלה
כדי לוודא שסקריפט לטעינה בזמן ההפעלה יצר את האתר, אפשר להציג את כתובת ה-IP החיצונית בדפדפן אינטרנט. יכול להיות שתצטרכו להמתין כדקה עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
גישה למטא-נתונים מסקריפט לטעינה בזמן ההפעלה ב-Linux
בסקריפט לטעינה בזמן ההפעלה אפשר לגשת לערכי מטא-נתונים. לדוגמה, אפשר להשתמש באותו סקריפט לכמה מכונות וירטואליות, ולהגדיר פרמטרים לכל סקריפט בנפרד על ידי העברת ערכים שונים של מטא-נתונים לכל מכונה וירטואלית.
כדי לגשת לערך של מטא-נתונים בהתאמה אישית מסקריפט לטעינה בזמן ההפעלה, פועלים לפי השלבים הבאים:
יוצרים סקריפט לטעינה בזמן ההפעלה שמבצע שאילתה לגבי הערך של מפתח מטא-נתונים. לדוגמה, סקריפט לטעינה בזמן ההפעלה הבא של קובץ bash (
.sh) שולח שאילתה לגבי הערך של מפתח המטא-נתוניםfoo.#! /bin/bash METADATA_VALUE=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo -H "Metadata-Flavor: Google") apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html> EOF
כדי להגדיר את הערך של מפתח המטא-נתונים
fooכשיוצרים מכונה וירטואלית, משתמשים בפקודה הבאהgcloud compute instances create. בדוגמה הזו, סקריפט לטעינה בזמן ההפעלה מועבר למכונה הווירטואלית מקובץ מקומי.gcloud
gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH \ --metadata=foo=bar
מחליפים את מה שכתוב בשדות הבאים:
VM_NAME: השם של ה-VM
FILE_PATH: הנתיב היחסי לקובץ של סקריפט ההפעלה
מידע נוסף על ציון צמד מפתח/ערך של מטא-נתונים זמין במאמר הגדרת מטא-נתונים מותאמים אישית.
בתחנת העבודה המקומית, מציגים את כתובת ה-IP החיצונית בדפדפן אינטרנט כדי לוודא שסקריפט לטעינה בזמן ההפעלה מוציא את הערך של
foo. יכול להיות שתצטרכו לחכות בערך דקה עד שסקריפט לטעינה בזמן ההפעלה לדוגמה יסיים את הפעולה.
הפעלה מחדש של סקריפט לטעינה בזמן ההפעלה של Linux
כדי להפעיל מחדש סקריפט לטעינה בזמן ההפעלה:
הרצת הפקודה הבאה:
sudo google_metadata_script_runner startup
צפייה בפלט של סקריפט לטעינה בזמן ההפעלה של Linux
כדי לראות את הפלט של סקריפט לטעינה בזמן ההפעלה ב-Linux, אפשר לבצע אחת מהפעולות הבאות:
מתחברים למופע ומריצים את הפקודה הבאה:
sudo journalctl -u google-startup-scripts.serviceצפייה בפלט דרך יציאה טורית 1 במסוף Cloud de Confiance ובדיקה של אירועי
google_metadata_script_runner.