הפעלת סקריפטים מותאמים אישית להפעלה במכונה הווירטואלית המארחת

‫Cloud Workstations מאפשר להריץ סקריפטים מותאמים אישית להפעלה במכונה הווירטואלית של תחנת העבודה המארחת לפני שהקונטיינר של תחנת העבודה מתחיל לפעול. האפשרות הזו שימושית כשרוצים לבצע הגדרה ברמת המכונה הווירטואלית או להתקין תוכנה נוספת שצריכה לפעול מחוץ למאגר של תחנת העבודה.

הפעלת סקריפטים מותאמים אישית להפעלה במכונה הווירטואלית המארחת היא תכונה מתקדמת. במקום להשתמש בסקריפטים להפעלה, מומלץ להתאים אישית את קובץ האימג' של הקונטיינר.

אם תבחרו להשתמש בסקריפטים לטעינה בזמן ההפעלה, חשוב לוודא שהסקריפט שלכם תואם לשינויים בתמונת מערכת הפעלה שמותאמת לקונטיינרים ‏ (COS), כי מכונת ה-VM המארחת מקבלת עדכוני מערכת שוטפים שמבוססים על COS.

לפני שמתחילים

מתקינים את ה-CLI של Google Cloud ואז נכנסים ל-gcloud CLI באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

gcloud init

הכנת סקריפט לטעינה בזמן ההפעלה

יוצרים את הסקריפט לטעינה בזמן ההפעלה שרוצים להריץ במכונה הווירטואלית של תחנת העבודה המארחת. כשכותבים את הסקריפט, חשוב להקפיד על ההנחיות הבאות:

  1. ב-Cloud Workstations מופעל קונטיינר תחנת העבודה שצוין, וגם כמה קונטיינרים של המערכת במכונה הווירטואלית של תחנת העבודה המארחת, כדי לוודא שתחנת העבודה פועלת בצורה תקינה. כל מאגרי התגים פועלים באמצעות containerd runtime ולקוח crictl.
  2. מריצים את כל הקונטיינרים הנוספים שהופעלו על ידי סקריפט לטעינה בזמן ההפעלה באמצעות containerd. ‫Docker מושבת במכונה הווירטואלית המארחת כדי למנוע הפרעות לשירות Docker Daemon שפועל בתוך קונטיינר תחנת העבודה.
  3. קונטיינרים ברמת המארח שהופעלו על ידי סקריפט לטעינה בזמן ההפעלה לא יכולים ליצור אינטראקציה עם הקונטיינר של תחנת העבודה הראשית. האינטראקציות הישירות האלה לא נתמכות כי הן עוקפות את הבדיקות של ניהול הזהויות והרשאות הגישה (IAM).

אחסון סקריפט לטעינה בזמן ההפעלה ב-Cloud Storage

מעלים את הסקריפט לקטגוריה של Cloud Storage ומוודאים שחשבון השירות שמשויך לתחנת העבודה יכול לגשת לסקריפט.

  1. מעלים את התסריט לקטגוריה:

    gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • LOCAL_SCRIPT_PATH: הנתיב המקומי לקובץ של סקריפט לטעינה בזמן ההפעלה.
    • BUCKET_NAME: שם הקטגוריה של Cloud Storage.
    • SCRIPT_NAME: השם שרוצים לתת לקובץ הסקריפט בדלי.
  2. חשוב לוודא שלחשבון השירות שבו נעשה שימוש בהגדרת תחנת העבודה יש הרשאות גישה לקובץ הסקריפט ולמאגר. אפשר גם להגדיר את הסקריפט כגלוי לכולם.

יצירת הגדרה אישית של תחנת עבודה

כדי להשתמש בסקריפט לטעינה בזמן ההפעלה מותאם אישית, יוצרים הגדרה של תחנת עבודה ומציינים את ה-URI של Cloud Storage של הסקריפט.

המסוף

כדי להגדיר סקריפט לטעינה בזמן ההפעלה כשיוצרים הגדרת תחנת עבודה:

  1. נכנסים לדף Workstation configurations במסוף Google Cloud .

    מעבר להגדרות של תחנות עבודה

  2. לוחצים על הוספה יצירה.

  3. בדף מידע בסיסי, מזינים שם להגדרה, בוחרים באשכול תחנות עבודה ולוחצים על המשך.

  4. בדף Machine settings (הגדרות המכונה), מגדירים את הגדרות המכונה ולוחצים על Continue (המשך).

  5. בדף הגדרות הסביבה, מרחיבים את הקטע אפשרויות מתקדמות של מאגר התגים.

  6. בשדה Custom startup script (סקריפט לטעינה בזמן ההפעלה בהתאמה אישית), מזינים את הנתיב של סקריפט לטעינה בזמן ההפעלה ב-Cloud Storage (לדוגמה, gs://BUCKET_NAME/SCRIPT_NAME).

  7. משלימים את השלבים שנותרו ולוחצים על יצירה.

REST

כדי להגדיר סקריפט לטעינה בזמן ההפעלה מותאם אישית באמצעות API בארכיטקטורת REST, יוצרים את הגדרת תחנת העבודה ומגדירים את השדה startupScriptUri בהודעה host.gceInstance ל-URI של Cloud Storage של הסקריפט:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
       "host": {
         "gceInstance": {
           "poolSize": 1,
           "startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
           "serviceAccount": "SERVICE_ACCOUNT"
         }
       }
     }' \
     https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID

מחליפים את מה שכתוב בשדות הבאים:

  • SERVICE_ACCOUNT: כתובת האימייל של חשבון השירות שמשויך להגדרת תחנת העבודה.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • LOCATION: האזור שבו נמצא אשכול תחנות העבודה.
  • CLUSTER_ID: המזהה של אשכול תחנות העבודה.
  • CONFIG_ID: המזהה שרוצים להקצות להגדרת תחנת העבודה החדשה.

אימות ביצוע הסקריפט

כדי לוודא שהסקריפט פעל בצורה תקינה, אפשר להשתמש באחת מהשיטות הבאות:

  • יומני פלט של יציאה טורית 3: יומני הפלט שנוצרו על ידי הסקריפט נשלחים אוטומטית אל פלט של יציאה טורית 3. כדי למצוא את שם המכונה הווירטואלית שהוקצתה לתחנת העבודה, אפשר לעיין ביומני הפלטפורמה.
  • מתחברים למכונה הווירטואלית באמצעות SSH: אפשר להתחבר למכונה הווירטואלית של תחנת העבודה באמצעות SSH כדי לבצע ניפוי באגים נוסף בסקריפט, אם צריך.
  • בדיקות מוכנות: סקריפטים להפעלה הם מאמץ מיטבי ולא חוסמים את הפעלת תחנת העבודה. אם לוקח לסקריפט הרבה זמן לפעול או שהוא נכשל, יכול להיות שתחנת העבודה עדיין תסומן כ'מוכנה'. כדי לוודא שתחנת העבודה לא תסומן כ'מוכנה' עד שהסקריפט יסיים את הפעולה, כדאי להטמיע בדיקות מוכנות.

המאמרים הבאים