התקנת תוספים למכונות וירטואליות על ידי יצירת כללי מדיניות לתוספים

במאמר הזה מוסבר איך ליצור מדיניות של תוספים למכונות וירטואליות (VM), שמאפשרת להתקין ולנהל תוספים באופן אוטומטי בצי של מכונות וירטואליות של Compute Engine. הגדרת מדיניות מאפשרת לוודא שתוספים ספציפיים מותקנים ומתוחזקים בכל המכונות הווירטואליות שתואמות לקריטריונים שציינתם, כמו תוויות של מכונות וירטואליות.

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

התפקידים שצריך ב-IAM

כדי לקבל את ההרשאה שנדרשת ליצירת מדיניות הרחבות, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ VM Extension Policy Admin (אדמין של מדיניות הרחבות למכונות וירטואליות) (roles/compute.vmExtensionPolicyAdmin). כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה כולל את ההרשאה compute.vmExtensionPolicies.create, שנדרשת כדי ליצור מדיניות הרשאות לתוספים.

יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים מוגדרים מראש.

מידע נוסף על תפקידים והרשאות ב-IAM ב-Compute Engine זמין במאמר תפקידים והרשאות ב-Compute Engine.

עדיפות המדיניות ופתרון סתירות

אם כמה כללי מדיניות חלים על אותה מכונה וירטואלית, VM Extension Manager משתמש בעדיפות המדיניות כדי לפתור את ההתנגשויות.

אם יש סתירה בין שתי מדיניות לגבי אותה תוסף, המדיניות עם העדיפות הגבוהה יותר תקבל עדיפות. ערכי העדיפות נעים בין 0 ל-65535, כאשר מספר נמוך יותר מציין עדיפות גבוהה יותר. עדיפות ברירת המחדל היא 1,000. אם לכמה כללי מדיניות יש אותה עדיפות, VM Extension Manager מחיל על המכונות הווירטואליות את כלל המדיניות שעודכן לאחרונה. מחיקת מדיניות לא מסירה את התוסף אם מדיניות בעדיפות נמוכה יותר עדיין חלה על המכונה הווירטואלית.

יצירת מדיניות גלובלית לתוספים למכונות וירטואליות

אתם יכולים ליצור מדיניות גלובלית של תוספים למכונות וירטואליות כדי להתקין תוספים במכונות וירטואליות בכמה אזורים בפרויקט, בהתאם לתוכנית השקה. מדיניות גלובלית של תוספי VM לא חלה ישירות על מכונות וירטואליות. במקום זאת, כשהמדיניות מושקת, VM Extension Manager יוצר כללי מדיניות בכל אזור על סמך תוכנית ההשקה. לאחר מכן, כללי המדיניות האלה מנהלים את התקנת התוספים במכונות הווירטואליות באזורים שלהם.

אפשר להשתמש ב-gcloud או ב-method‏ globalVmExtensionPolicies.insert כדי ליצור כללי מדיניות גלובליים לתוספים.

מידע על תוכניות השקה

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

תוכניות השקה מוגדרות מראש

  • slow_rollout: המדיניות תושק במשך חמישה ימים. השקה הדרגתית היא תוכנית ההשקה שמוגדרת כברירת מחדל.
  • ‫fast_rollout: המדיניות מופעלת מיד בכל האזורים.

תוכניות השקה בהתאמה אישית

אתם יכולים ליצור תוכניות השקה בהתאמה אישית באמצעות השיטה rolloutPlans.insert. לדוגמה, קובץ ה-JSON הבא מגדיר תוכנית השקה בשם test-rollout-plan שמיועדת לשני אזורים:

{
  "name": "test-rollout-plan",
  "waves": [
    {
      "selectors": [
        {
          "locationSelector": {
            "includedLocations": [
              "us-central1-a",
              "us-west1-a"
            ]
          }
        }
      ],
      "validation": {
        "type": "time",
        "timeBasedValidationMetadata": {
          "waitDuration": "0s"
        }
      },
      "orchestrationOptions": {
        "maxConcurrentResourcesPerLocation": "10",
        "maxConcurrentLocations": "10"
      }
    }
  ]
}

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

יצירת מדיניות גלובלית

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

המסוף

  1. נכנסים לדף VM extension policies במסוף Google Cloud .

    לדף VM extension policies

  2. לוחצים על יצירה.
  3. בשדה Name, מזינים שם למדיניות.
  4. אופציונלי: בשדה תיאור, מזינים תיאור למדיניות.
  5. בשדה עדיפות, מציינים מספר עדיפות כדי לפתור סתירות בין כללי מדיניות. מספרים נמוכים יותר מציינים עדיפות גבוהה יותר. ערך ברירת המחדל הוא 1,000.
  6. בקטע היקף, בוחרים באפשרות השקה גלובלית.
  7. בקטע Manage extensions (ניהול תוספים), לוחצים על Add extension (הוספת תוסף) ומבצעים את הפעולות הבאות לכל תוסף שרוצים להתקין במכונות הווירטואליות של היעד:
    1. ברשימה תוסף, בוחרים תוסף.
    2. ברשימה Version, מציינים את מספר הגרסה או משאירים את השדה ריק כדי להשתמש בגרסה העדכנית.
  8. בשדה תוכנית השקה, בוחרים תוכנית השקה מבין האפשרויות הבאות:

    • השקה איטית: התקנת תוספים בהדרגה בכל המכונות הווירטואליות לאורך זמן. זו האפשרות שמוגדרת כברירת המחדל.
    • השקה מהירה: התקנת התוספים בכל המכונות הווירטואליות המטורגטות בכל האזורים והמחוזות באופן מיידי.

    מידע נוסף על תוכניות השקה זמין במאמר תוכניות השקה.

  9. בקטע Target VM instances (מכונות וירטואליות ליעד), בוחרים את המכונות הווירטואליות שאליהן רוצים להחיל את המדיניות. כדי לבחור מכונות וירטואליות עם תוויות ספציפיות, לוחצים על Add labels ומוסיפים את צמד המפתח/ערך.

  10. לוחצים על יצירה.

gcloud

משתמשים בפקודה gcloud compute global-vm-extension-policies create כדי ליצור מדיניות גלובלית של תוספים למכונות וירטואליות:

gcloud compute global-vm-extension-policies create POLICY_NAME \
  --description="DESCRIPTION" \
  --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
  --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
  --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
  --inclusion-labels=KEY_1=VALUE_1 \
  --priority=PRIORITY \
  --rollout-predefined-plan=ROLLOUT_PLAN \
  --rollout-conflict-behavior=ROLLOUT_CONFLICT_BEHAVIOR

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

  • ‫POLICY_NAME: שם למדיניות של תוסף ה-VM.
  • ‫DESCRIPTION: תיאור אופציונלי של המדיניות.
  • ‫EXTENSION_NAME_1,EXTENSION_NAME_2: רשימה מופרדת בפסיקים של תוספים להוספה למדיניות. צריך לציין לפחות תוסף אחד. הערכים התקפים לתוספים הם:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • ‫EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: רשימה מופרדת בפסיקים של זוגות של מפתח וערך, כאשר המפתח הוא שם התוסף והערך הוא גרסת התוסף. אם לא מציינים גרסה לתוסף, VM Extension Manager משתמש בגרסה הזמינה האחרונה ומשדרג אותה אוטומטית כשגרסאות חדשות הופכות לזמינות.

    יש תמיכה רק בגרסה העדכנית ביותר.
  • ‫EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: רשימה מופרדת בפסיקים של צמדי מפתח/ערך, כאשר המפתח הוא שם התוסף והערך הוא הנתיב לקובץ התצורה של התוסף. הקובץ הזה נמצא במכונה הווירטואלית שבה מריצים את הפקודה gcloud, ולא במכונה הווירטואלית שבה מתקינים את התוסף.

    לחלופין, כדי לספק את ההגדרה כמחרוזת מוטבעת, משתמשים בדגל --config במקום בדגל --config-from-file. לדוגמה: EXTENSION_NAME_1="CONFIG_1". אפשר להשתמש ב---config-from-file או ב---config, אבל לא בשניהם באותה פקודה.

  • ‫KEY_1=VALUE_1: רשימה מופרדת בפסיקים של צמדי מפתח/ערך שמגדירים תוויות הכללה לבורר. כדי שהמכונות הווירטואליות יטורגטו, הן צריכות לכלול את כל התוויות שצוינו בבורר. אם מציינים את --inclusion-labels כמה פעמים, המדיניות מכוונת למכונות וירטואליות שתואמות לכל אחד מהסלקטורים שצוינו (אופרטור OR לוגי). אם לא מציינים את הדגל הזה, המדיניות מכוונת לכל מכונות ה-VM בפרויקט בכל האזורים.

  • ‫PRIORITY: מספר שלם שמגדיר את העדיפות של המדיניות. מספרים גדולים יותר מציינים עדיפות גבוהה יותר. ערך ברירת המחדל הוא 1,000. אם לכמה כללי מדיניות יש אותה עדיפות, כלל המדיניות שעודכן לאחרונה יחול על המכונות הווירטואליות.

  • ‫ROLLOUT_PLAN: מציינים slow_rollout או fast_rollout. אם אתם צריכים להשתמש בתוכנית השקה בהתאמה אישית, השתמשו בדגל --rollout-custom-plan במקום בדגל --rollout-predefined-plan וציינו את שם התוכנית, לדוגמה:

    --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

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

    • ‫PROJECT_NUMBER: הפרויקט שבו מוגדרת תוכנית ההשקה.
    • ‫ROLLOUT_PLAN_NAME: השם של תוכנית הפריסה המותאמת אישית שהגדרתם. אם לא צוין דגל של תוכנית השקה, המערכת משתמשת ב-slow_rollout.
  • ‫ROLLOUT_CONFLICT_BEHAVIOR: מציין את ההתנהגות כשמזוהה התנגשות בין מדיניות ברמת האזור לבין מדיניות גלובלית. הערכים שאפשר לבחור הם:

    • ‫"" (מחרוזת ריקה): המדיניות הגלובלית לא מחליפה מדיניות אזורית סותרת עם אותו שם. זאת פעולת ברירת המחדל.
    • ‫overwrite: המדיניות הגלובלית מחליפה כל מדיניות אזורית עם אותו שם, ואז המדיניות הגלובלית מנהלת את השקת המדיניות באזור.

    פרטים נוספים זמינים במאמר בנושא הדגל --rollout-conflict-behavior.

דוגמה 1

הפקודה הבאה יוצרת מדיניות בשם global-test-extension-policy שמתקינה את התוסף ops-agent לפרויקט test-project. הדגל --config-from-file מציין את הנתיב לקובץ מקומי שמכיל הגדרת YAML לסוכן תפעול, והדגל --rollout-predefined-plan מציין את תוכנית slow_rollout.

gcloud compute global-vm-extension-policies create global-test-extension-policy \
    --project=test-project \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --rollout-predefined-plan=slow_rollout

דוגמה 2

הפקודה הבאה יוצרת מדיניות בשם global-test-extension-policy-2 שמתקינה את התוסף ops-agent לפרויקט test-project במכונות וירטואליות עם התווית env=prod. עדיפות המדיניות מוגדרת ל-500, והדגל --config-from-file מציין את הנתיב לקובץ מקומי שמכיל הגדרת YAML ל-סוכן תפעול. הדגל --rollout-custom-plan מציין תוכנית השקה בהתאמה אישית.

 gcloud compute global-vm-extension-policies create global-test-extension-policy-2 \
    --project=test-project \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --priority=500 \
    --inclusion-labels=env=prod \
    --rollout-custom-plan=projects/12345678/locations/global/rolloutPlans/test-rollout-plan

REST

כדי ליצור מדיניות גלובלית של תוסף למכונה וירטואלית, שולחים בקשת POST אל ה-method‏ globalVmExtensionPolicies.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/vmExtensionPolicies

{
  "name": "POLICY_NAME",
  "description": "DESCRIPTION",
  "extensionPolicies": {
     "EXTENSION_NAME_1": {
       "stringConfig": "EXTENSION_NAME_1_CONFIG",
       "pinnedVersion": "EXTENSION_NAME_1_VERSION"
    },
     "EXTENSION_NAME_2": {
       "stringConfig": "EXTENSION_NAME_2_CONFIG",
       "pinnedVersion": "EXTENSION_NAME_2_VERSION"
    }
  },
  "instanceSelectors": [
    {
      "labelSelector": {
         "inclusionLabels": {
           "KEY_1": "VALUE_1"
         }
      }
    }
  ],
  "priority": "PRIORITY",
  "rolloutOperation": {
    "rolloutInput": {
      "conflictBehavior": "ROLLOUT_CONFLICT_BEHAVIOR",
      "name": "projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME"
    }
  }
}

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

  • PROJECT_ID: מזהה הפרויקט.
  • ‫POLICY_NAME: שם למדיניות של תוסף ה-VM.
  • ‫DESCRIPTION: תיאור אופציונלי של המדיניות.
  • ‫EXTENSION_NAME_1, EXTENSION_NAME_2: השם של התוסף שרוצים להוסיף למדיניות. צריך לציין לפחות תוסף אחד. הערכים התקפים לתוספים הם:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • ‫EXTENSION_NAME_1_CONFIG, EXTENSION_NAME_2_CONFIG: ההגדרה של התוסף, שמופיעה כמחרוזת מוטבעת.
  • ‫EXTENSION_NAME_1_VERSION, ‏EXTENSION_NAME_2_VERSION: גרסת התוסף. אם לא מציינים גרסה לתוסף, VM Extension Manager משתמש בגרסה הזמינה האחרונה ומשדרג אותה באופן אוטומטי כשגרסאות חדשות הופכות לזמינות.

    יש תמיכה רק בגרסה העדכנית ביותר.
  • ‫KEY_1: VALUE_1: זוג של מפתח וערך שמגדיר תוויות הכללה לבורר. כדי שהמכונות הווירטואליות יטורגטו, הן צריכות לכלול את כל התוויות שצוינו בבורר. אם מציינים כמה instanceSelectors, המדיניות מכוונת למכונות וירטואליות שתואמות לכל אחד מהסלקטורים שצוינו (האופרטור הלוגי OR). אם לא מציינים את instanceSelectors, המדיניות מכוונת לכל המכונות הווירטואליות בפרויקט בכל האזורים.

  • ‫PRIORITY: מספר שלם שמגדיר את העדיפות של המדיניות. מספרים גדולים יותר מציינים עדיפות גבוהה יותר. ערך ברירת המחדל הוא 1,000. אם לכמה כללי מדיניות יש אותה עדיפות, כלל המדיניות שעודכן לאחרונה יחול על המכונות הווירטואליות.

  • ‫ROLLOUT_CONFLICT_BEHAVIOR: מציין את ההתנהגות כשמזוהה קונפליקט בין מדיניות אזורית למדיניות גלובלית. הערכים שאפשר לבחור הם:

    • ‫"" (מחרוזת ריקה): המדיניות הגלובלית לא מחליפה מדיניות אזורית סותרת עם אותו שם. זאת פעולת ברירת המחדל.
    • ‫overwrite: המדיניות הגלובלית מחליפה כל מדיניות אזורית עם אותו שם, ואז המדיניות הגלובלית מנהלת את השקות המדיניות באזור.

      לפרטים נוספים, ראו הדגל --rollout-conflict-behavior.

  • ‫PROJECT_NUMBER: הפרויקט שבו מוגדרת תוכנית ההשקה המותאמת אישית.

  • ‫ROLLOUT_PLAN_NAME: השם של תוכנית ההשקה בהתאמה אישית שהגדרתם. כדי להשתמש בתוכנית השקה מוגדרת מראש, מחליפים את השדה name ב-predefinedRolloutPlan ומציינים אחד מהערכים הבאים:

    • ‫SLOW_ROLLOUT: המדיניות תושק במשך חמישה ימים. זו תוכנית הפריסה שמוגדרת כברירת מחדל אם לא מצוינת תוכנית.
    • ‫FAST_ROLLOUT: המדיניות מופעלת באופן מיידי בכל האזורים.

דוגמה

בדוגמה הבאה נוצרת מדיניות בשם global-test-extension-policy שמתקינה את התוסף ops-agent לפרויקט 12345678 במכונות וירטואליות עם התווית env=prod. עדיפות המדיניות מוגדרת כ-500, והיא משתמשת בתוכנית ההשקה test-rollout-plan.

POST https://compute.googleapis.com/compute/v1/projects/12345678/global/vmExtensionPolicies

{
  "name": "global-test-extension-policy",
  "description": "Test extension policy for Ops Agent",
  "extensionPolicies": {
     "ops-agent": {
       "stringConfig": "logging:
        receivers:
          systemd_logs:
            type: systemd_journald
        service:
          pipelines:
            systemd_pipeline:
              receivers: [systemd_logs]",
       "pinnedVersion": "2.58.0"
        },
  "instanceSelectors": [
    {
      "labelSelector": {
         "inclusionLabels": {
         "env": "prod"
         }
      }
    }
  ],
  "priority": "500",
  "rolloutOperation": {
    "rolloutInput": {
      "name": "projects/12345678/locations/global/rolloutPlans/test-rollout-plan"
    }
  }
}

יצירת מדיניות של תוסף למכונה וירטואלית אזורית

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

המסוף

  1. נכנסים לדף VM extension policies במסוף Google Cloud .

    מעבר אל VM extension policies

  2. לוחצים על יצירת מדיניות תוספים.
  3. בשדה Name, מזינים שם למדיניות.
  4. אופציונלי: בשדה תיאור, מזינים תיאור למדיניות.
  5. בשדה עדיפות, מציינים מספר עדיפות כדי לפתור סתירות בין כללי מדיניות. מספרים נמוכים יותר מציינים עדיפות גבוהה יותר. ערך ברירת המחדל הוא 1,000.
  6. בקטע היקף, בוחרים באפשרות השקה אזורית.
  7. ברשימות Region ו-Zone, בוחרים את האזור והתחום שבהם נמצאים מכונות ה-VM. ‫VM Extension Manager מחיל את המדיניות על מכונות ה-VM באזור ובאזור המשנה שנבחרו.
  8. בקטע Extensions, לוחצים על Add extension ומבצעים את הפעולות הבאות לכל תוסף שרוצים להתקין במכונות הווירטואליות המיועדות:
    1. ברשימה Extension, בוחרים תוסף. למידע על תוספים נתמכים
    2. ברשימה Version, מציינים את מספר הגרסה של התוסף. משאירים את השדה ריק כדי לבחור את הגרסה העדכנית.
      • ב-Ops Agent, אפשר לציין את גרסה 2.58.0 ואילך.
      • במקרה של Extension for SAP ו-Extension for Compute workloads, משאירים את השדה ריק כדי לבחור את הגרסה העדכנית.
    3. אופציונלי: בשדה Config file content (תוכן קובץ תצורה), מזינים פרמטרים של תצורה לתוסף.
  9. בקטע Target VM instances (מכונות וירטואליות ליעד), בוחרים את המכונות הווירטואליות שאליהן רוצים להחיל את המדיניות. כדי לבחור מכונות וירטואליות עם תוויות ספציפיות, לוחצים על הוספת תוויות ומוסיפים את צמד המפתח/ערך.
  10. לוחצים על יצירה.

gcloud

כדי ליצור מדיניות של תוספים למכונות וירטואליות באזור ספציפי ולהפיץ את המדיניות למכונות הווירטואליות באזור הזה, משתמשים בפקודה gcloud compute zone-vm-extension-policies create:

gcloud compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --description="DESCRIPTION" \
    --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
    --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
    --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
    --inclusion-labels=KEY_1=VALUE_1 \
    --priority=PRIORITY

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

  • ‫POLICY_NAME: שם למדיניות של תוסף ה-VM.
  • ‫ZONE: האזור שבו המדיניות הזו חלה.
  • ‫DESCRIPTION: תיאור אופציונלי של המדיניות.
  • ‫EXTENSION_NAME_1,EXTENSION_NAME_2: רשימה מופרדת בפסיקים של תוספים להוספה למדיניות. צריך לציין לפחות תוסף אחד. הערכים התקפים לתוספים הם:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • ‫EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: רשימה מופרדת בפסיקים של זוגות של מפתח וערך, כאשר המפתח הוא שם התוסף והערך הוא גרסת התוסף. אם לא מציינים גרסה לתוסף, VM Extension Manager משתמש בגרסה הזמינה האחרונה ומשדרג אותה אוטומטית כשגרסאות חדשות הופכות לזמינות.

    יש תמיכה רק בגרסה העדכנית ביותר.
  • ‫EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: רשימה מופרדת בפסיקים של צמדי מפתח/ערך, שבה המפתח הוא שם התוסף והערך הוא הנתיב לקובץ התצורה של התוסף הזה. הנתיב הזה נמצא במכונה הווירטואלית שבה מריצים את הפקודה gcloud, ולא במכונה הווירטואלית שבה מתקינים את התוסף.

    לחלופין, כדי לספק הגדרה כמחרוזת מוטבעת, משתמשים בדגל --config במקום בדגל --config-from-file. לדוגמה, EXTENSION_NAME_1="CONFIG_1". אפשר להשתמש ב---config-from-file או ב---config, אבל לא בשניהם באותה פקודה.

  • ‫KEY_1=VALUE_1: רשימה מופרדת בפסיקים של צמדי מפתח/ערך שמגדירים תוויות להכללה עבור בורר. כדי שמכונות וירטואליות יהיו יעד, הן צריכות לכלול את כל התוויות שצוינו בסלקטור. אם מציינים את --inclusion-labels כמה פעמים, המדיניות מטרגטת מכונות וירטואליות שתואמות לכל אחד מהבוררים שצוינו (OR לוגי). אם משמיטים את הדגל הזה, המדיניות מטרגטת את כל מכונות ה-VM באזור שצוין.

  • ‫PRIORITY: מספר שלם בין 0 ל-65535 שמגדיר את העדיפות של המדיניות. מספרים נמוכים יותר מציינים עדיפות גבוהה יותר. ערך ברירת המחדל הוא 1,000.

    הפקודה תיכשל אם כבר קיים באזור כלל מדיניות עם השם שצוין.

דוגמה 1

הפקודה הבאה יוצרת מדיניות בשם test-extension-policy שמתקינה את התוסף ops-agent באזור us-central1-f עבור הפרויקט test-project. הדגל --config-from-file מציין את הנתיב לקובץ מקומי שמכיל הגדרת YAML לסוכן תפעול.

gcloud compute zone-vm-extension-policies create test-extension-policy \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml"

דוגמה 2

הפקודה הבאה יוצרת מדיניות בשם test-extension-policy-2 שמתקינה את התוסף ops-agent באזור us-central1-f לפרויקט test-project במכונות וירטואליות עם התווית env=prod. עדיפות המדיניות מוגדרת ל-500, והדגל --config-from-file מציין את הנתיב לקובץ מקומי שמכיל הגדרת YAML לסוכן תפעול.

gcloud compute zone-vm-extension-policies create test-extension-policy-2 \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --priority=500 \
    --inclusion-labels=env=prod

REST

כדי ליצור מדיניות הרחבה של מכונות וירטואליות באזורים, שולחים בקשת POST ל-method‏ zoneVmExtensionPolicies.insert. השיטה הזו מגדירה אילו תוספים להתקין ובאילו מכונות וירטואליות באזור ספציפי.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/vmExtensionPolicies

{
  "name": "POLICY_NAME",
  "description": "DESCRIPTION",
  "extensionPolicies": {
     "EXTENSION_NAME_1": {
       "stringConfig": "EXTENSION_NAME_1_CONFIG"
       "pinnedVersion": "EXTENSION_NAME_1_VERSION"
    },
     "EXTENSION_NAME_2": {
       "stringConfig": "EXTENSION_NAME_2_CONFIG"
       "pinnedVersion": "EXTENSION_NAME_2_VERSION"
    },
  "instanceSelectors": [
    {
      "labelSelector": {
         "inclusionLabels": {
         "KEY_1": "VALUE_1"
         }
      }
    }
  ],
  "priority": "PRIORITY"
}
}

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

  • PROJECT_ID: מזהה הפרויקט.
  • ‫ZONE: האזור שבו המדיניות הזו חלה.
  • ‫POLICY_NAME: שם למדיניות של תוסף ה-VM.
  • ‫DESCRIPTION: תיאור אופציונלי של המדיניות.
  • ‫EXTENSION_NAME_1, EXTENSION_NAME_2: השם של התוסף שרוצים להוסיף למדיניות. צריך לציין לפחות תוסף אחד. הערכים התקפים לתוספים הם:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • ‫EXTENSION_NAME_1_VERSION, ‏EXTENSION_NAME_2_VERSION: גרסת התוסף. אם לא מציינים גרסה לתוסף, VM Extension Manager משתמש בגרסה העדכנית ביותר שזמינה ומשדרג אותה באופן אוטומטי כשגרסאות חדשות זמינות.

  • ‫EXTENSION_NAME_1_CONFIG, EXTENSION_NAME_2_CONFIG: ההגדרה של התוסף, שמופיעה כמחרוזת מוטבעת.

  • ‫KEY_1: VALUE_1: זוג של מפתח וערך שמגדיר תוויות הכללה לבורר. כדי שמכונות וירטואליות יהיו יעד, הן צריכות לכלול את כל התוויות שצוינו בסלקטור. אם מציינים כמה ערכים של instanceSelectors, המדיניות מטרגטת מכונות וירטואליות שתואמות לכל אחד מהבוררים שצוינו (OR לוגי). אם לא מציינים את instanceSelectors, המדיניות מטרגטת את כל המכונות הווירטואליות באזור שצוין.

  • ‫PRIORITY: מספר שלם מ-0 עד 65535 שמגדיר את העדיפות של המדיניות. מספרים נמוכים יותר מציינים עדיפות גבוהה יותר. ערך ברירת המחדל הוא 1,000.

דוגמה

בדוגמה הבאה נוצרת מדיניות בשם test-extension-policy שמתקינה את התוסף ops-agent באזור us-central1-f עבור my-project.

POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/vmExtensionPolicies

{
  "name": "test-extension-policy",
  "description": "Test extension policy for Ops Agent",
  "extensionPolicies": {
     "ops-agent": {
       "stringConfig": "logging:
        receivers:
          systemd_logs:
            type: systemd_journald
        service:
          pipelines:
            systemd_pipeline:
              receivers: [systemd_logs]",
       "pinnedVersion": "2.58.0"
        },
  "instanceSelectors": [
    {
      "labelSelector": {
         "inclusionLabels": {
         "env": "test"
         }
      }
    }
  ],
  "priority": "500"
}
}

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