אתם יכולים ליצור ולהריץ סקריפטים של כיבוי שמבצעים פקודות רגע לפני שמופסק או מופעל מחדש מופע של מכונה וירטואלית (VM). האפשרות הזו שימושית אם אתם מסתמכים על סקריפטים אוטומטיים כדי להפעיל ולכבות מכונות וירטואליות, ומאפשרת למכונות הווירטואליות לנקות את עצמן או לבצע משימות, כמו ייצוא יומנים או סנכרון עם מערכות אחרות.
סקריפטים של כיבוי שימושיים במיוחד למכונות וירטואליות בקבוצת מופעי מכונה מנוהלים עם כלי לשינוי גודל אוטומטי. אם הכלי להתאמה אוטומטית לעומס משבית מכונה וירטואלית בקבוצה, סקריפט ההשבתה מופעל לפני שהמכונה הווירטואלית מפסיקה לפעול, והסקריפט מבצע את כל הפעולות שהגדרתם. הסקריפט פועל במהלך תקופת ההשבתה המוגבלת לפני שהמכונה הווירטואלית מפסיקה לפעול. לדוגמה, סקריפט ההשבתה יכול להעתיק נתונים מעובדים ל-Cloud Storage או לגבות יומנים.
סקריפטים של כיבוי פועלים באופן דומה מאוד לסקריפטים של הפעלה. חלק גדול מהתיעוד של סקריפטים לטעינה בזמן ההפעלה רלוונטי גם לסקריפטים לכיבוי.
גם במשימות של כיבוי וגם במשימות של הפעלה מחדש, המכונות הווירטואליות תמיד מריצות סקריפטים של כיבוי באופן הבא:
- במכונות וירטואליות של Linux, באמצעות המשתמש
root. - במכונות וירטואליות של Windows, באמצעות חשבון
System.
דרישות מוקדמות
כדי להריץ סקריפטים שמאוחסנים במטא-נתונים במכונת 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
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
יוצרים פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
Terraform
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .
ההרשאות שנדרשות למשימה הזו
כדי לבצע את המשימה הזו, אתם צריכים את ההרשאות הבאות:
- כל ההרשאות שנדרשות כדי ליצור מכונה
compute.instances.setMetadataבמופע
מפרטים
בקטעים הבאים מפורטים המפרטים של סקריפטים להשבתה.
מגבלות
יש כמה מגבלות שחשוב לזכור כשמשתמשים בסקריפטים להשבתה:
- Compute Engine מפעיל סקריפטים של כיבוי רק על בסיס 'כמיטב יכולתנו'. במקרים נדירים, מערכת Compute Engine לא יכולה להבטיח שהסקריפט של כיבוי המכונה יושלם.
- ב-Windows, מדיניות הקבוצה המקומית משמשת להפעלת סקריפט הכיבוי.
- חבילת ההתקנה מגדירה את ההגדרה של מדיניות הקבוצה המקומית
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)להפעלת הסקריפט עם כיבוי המערכת.
- חבילת ההתקנה מגדירה את ההגדרה של מדיניות הקבוצה המקומית
הפעלת סקריפט כיבוי
סקריפטים של כיבוי מופעלים כשהמופע נסגר אחרי שאחד מהאירועים הבאים קורה:
אתם מבצעים את הפעולות הבאות:
מפסיקים או מפעילים מחדש את המופע מתוך מערכת ההפעלה של האורח.
מכונה של Compute Engine מופסקת כחלק מפעולת הפסקה או מחיקה מתוכנתת.
מערכת Compute Engine מפסיקה את הפעילות של מכונה וירטואלית (VM) מסוג Spot או של מכונה זמנית כחלק מתהליך ההפקעה.
סקריפט ההשבתה יכול להיות מכל סוג קובץ. אם יש סקריפט כיבוי במכונה, מערכת Compute Engine מבצעת את הפעולות הבאות:
- הפקודה מעתיקה את הסקריפט לקובץ מקומי במופע.
- מגדיר הרשאות בקובץ כדי שהסקריפט יהיה ניתן להרצה.
- הקובץ מופעל כשהמופע מושבת.
לדוגמה, אפשר לספק סקריפט Python במקום סקריפט bash. חשוב לזכור: Compute Engine מריץ את הסקריפט בדיוק כמו שהוא, בלי קשר לסוג הסקריפט.
כדי להריץ סקריפט שהוא לא bash, מוסיפים שורת shebang בחלק העליון של הקובץ כדי שהמערכת תדע באיזה מפענח להשתמש. לדוגמה, בסקריפט Python, אפשר להוסיף שורת shebang כמו:
#!/usr/bin/python
זמן הפעלת סקריפט הכיבוי
סקריפטים להשבתה מתחילים לפעול כש-Compute Engine מגדיר את מצב המופע ל-STOPPING. הסקריפטים צריכים להסתיים לפני שהמופע מפסיק לפעול באופן מלא, כלומר לפני שהסטטוס שלו משתנה לTERMINATED. הזמן שנדרש למופע כדי להגיע למצב TERMINATED משתנה בהתאם לסוג המופע.
אם הסקריפטים נמשכים יותר זמן מהזמן שנדרש להפסקת המכונה, Compute Engine מפסיק את הסקריפטים בכוח, מה שעלול לגרום לאובדן נתונים או למשימות לא שלמות. כדי למנוע את זה, צריך להפסיק את המופע מתוך מערכת ההפעלה של האורח.
בגישה הזו, מצב המופע נשאר STOPPING עד שסקריפטים להשבתה מסיימים לפעול.
שימוש בסקריפט מקומי לכיבוי
סקריפט מקומי לכיבוי הוא סקריפט שקיים במחשב המקומי. מעבירים סקריפט מקומי לכיבוי כמחרוזת או כקובץ ל-Compute Engine.
סקריפטים להשבתה יכולים לבצע כמה פעולות שצריך, אבל אם מעבירים את הקובץ באופן מקומי, הסקריפט לא יכול לחרוג ממגבלת האורך של ערך המטא-נתונים, שהיא 256KB. כדי להשתמש בסקריפט שאורכו חורג מהמגבלה, צריך לאחסן את הקובץ ב-Cloud Storage. מידע נוסף זמין במאמר בנושא שימוש בסקריפט כיבוי מ-Cloud Storage.
הוספת קובץ סקריפט לכיבוי
אפשר להעביר קובץ סקריפט מקומי לכיבוי רק באמצעות כלי שורת הפקודה gcloud.
gcloud
כדי להעביר קובץ סקריפט מקומי לכיבוי, מציינים את הדגל --metadata-from-file ואחריו זוג מפתח ומטא-נתונים, shutdown-script=PATH/TO/FILE, כאשר PATH/TO/FILE הוא נתיב יחסי לסקריפט הכיבוי. לדוגמה:
gcloud compute instances create example-instance \
--metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
כדי לציין סקריפט כיבוי ישירות, משתמשים במשאב google_compute_instance עם הנתיב לסקריפט הכיבוי במטא-נתונים.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
אספקת תוכן סקריפט כיבוי ישירות
אפשר גם להעביר ישירות את התוכן של סקריפט הכיבוי.
המסוף
במסוף, מציינים סקריפט כיבוי ישירות באמצעות מפתח המטא-נתונים shutdown-script: Cloud de Confiance
נכנסים לדף Create an instance.
מציינים את פרטי המכונה הווירטואלית.
מרחיבים את הקטע אפשרויות מתקדמות.
מרחיבים את האפשרות ניהול ומבצעים את הפעולות הבאות:
- בקטע מטא נתונים, לוחצים על הוספת פריט.
- בשדה מפתח, מזינים
shutdown-scriptכמפתח המטא-נתונים. - בשדה ערך, מוסיפים את התוכן של סקריפט ההשבתה.
ממשיכים בתהליך יצירת מכונת ה-VM.
gcloud
באמצעות Google Cloud CLI, משתמשים בדגל --metadata כדי לספק את התוכן של סקריפט ההשבתה, ואז משתמשים בצמד המפתחות shutdown-script=CONTENTS, כאשר CONTENTS הוא התוכן של סקריפט ההשבתה.
gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash
> # Shuts down Apache server
> /etc/init.d/apache2 stop"
Terraform
כדי לציין סקריפט כיבוי באופן ישיר, משתמשים במשאב google_compute_instance עם סקריפט הכיבוי במטא-נתונים.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
REST
ב-API, כשיוצרים מופע, צריך לספק סקריפט כיבוי כחלק ממאפיין המטא-נתונים בבקשה. משתמשים ב-shutdown-script כמפתח המטא-נתונים:
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances
{...
"metadata": {
"items": [
{
"key": "shutdown-script",
"value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop"
}
]
}...
}
הוספת סקריפט כיבוי במופעי Windows
מריצים סקריפטים של כיבוי במופעי Windows באמצעות מפתחות המטא-נתונים הבאים שספציפיים ל-Windows. בוחרים אחד מהמקשים המיוחדים שמופיעים בהמשך. כל מפתח צריך להתאים לסוג הסקריפט שרוצים להריץ.
אפשר לציין כמה סקריפטים של כיבוי על ידי העברת מפתחות שונים למופע, אבל כל מפתח יכול להיות מצוין רק פעם אחת לכל מכונה וירטואלית.
אפשר להשתמש במקשים הבאים עם סקריפט מקומי לכיבוי, באמצעות אותן הוראות שמופיעות בהמשך המאמר הזה.
cmd סקריפטים להשבתה |
bat סקריפטים להשבתה |
ps1 סקריפטים להשבתה |
|---|---|---|
windows-shutdown-script-cmd |
windows-shutdown-script-bat |
windows-shutdown-script-ps1 |
שימוש בסקריפט לכיבוי מ-Cloud Storage
אפשר לאחסן סקריפט לכיבוי ב-Cloud Storage ולהשתמש בו. פועלים לפי ההוראות במסמכי התיעוד בנושא סקריפטים לטעינה בזמן ההפעלה, אבל מחליפים את startup-script-url ב-shutdown-script-url.
במכונות Windows, מחליפים את windows-startup-script-url ב-windows-shutdown-script-url.
החלת סקריפט כיבוי על מופעים פעילים
כדי להוסיף סקריפט כיבוי למופע פעיל, פועלים לפי ההוראות במאמרי עזרה החלת סקריפט לטעינה בזמן ההפעלה על מופעים פעילים, אבל מחליפים את מפתחות המטא-נתונים באחד מהמפתחות הבאים:
-
shutdown-script: מזינים את התוכן של סקריפט ההשבתה ישירות באמצעות המפתח הזה. באמצעות Google Cloud CLI, אפשר לספק את הנתיב לקובץ סקריפט כיבוי באמצעות הדגל--metadata-from-fileומפתח המטא-נתוניםshutdown-script. -
shutdown-script-url: מציינים כתובת URL של Cloud Storage לקובץ של סקריפט ההשבתה באמצעות המפתח הזה.
הצגת הפלט של סקריפט כיבוי
Linux
כדי לראות את הפלט של סקריפט כיבוי של Linux, אפשר לבצע אחת מהפעולות הבאות:
מתחברים למופע ומריצים את הפקודה הבאה:
sudo journalctl -u google-shutdown-scripts.serviceצפייה בפלט דרך יציאה טורית 1 במסוף Cloud de Confiance ובדיקה של אירועי
google_metadata_script_runner.IAP Desktop מתחנת עבודה של Windows. מידע נוסף זמין במאגר GoogleCloudPlatform/iap-desktop ב-GitHub.
Windows
אפשר להציג את הפלט מסקריפט של כיבוי Windows Server באמצעות אחת מהאפשרויות הבאות ולבדוק אם יש אירועי GCEMetadataScripts:
יציאה טורית 1 במסוף Cloud de Confiance . מידע נוסף מופיע במאמר בנושא צפייה בפלט של יציאה טורית.
יומן האפליקציות של Windows Event Viewer.
IAP Desktop מתחנת עבודה של Windows. מידע נוסף זמין במאגר GoogleCloudPlatform/iap-desktop ב-GitHub.