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

במאמר הזה מוסבר איך ליצור מדיניות של תוספים למכונות וירטואליות, שמאפשרת להתקין ולנהל תוספים באופן אוטומטי בצי של מכונות וירטואליות (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 או בשיטה 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 .

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

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

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

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

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

  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, המדיניות מכוונת לכל מכונות ה-VM בפרויקט בכל האזורים.

  • 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"
    }
  }
}

יצירת מדיניות אזורית של תוספי VM

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

המסוף

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

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

  2. לוחצים על יצירת מדיניות לגבי תוספים.
  3. בשדה Name, מזינים שם למדיניות.
  4. אופציונלי: בשדה תיאור, מזינים תיאור למדיניות.
  5. בשדה עדיפות, מציינים מספר עדיפות כדי לפתור סתירות בין כללי מדיניות. מספרים נמוכים יותר מציינים עדיפות גבוהה יותר. ערך ברירת המחדל הוא 1,000.
  6. בקטע היקף, בוחרים באפשרות השקה אזורית.
  7. ברשימות Region ו-Zone, בוחרים את האזור והתחום שבהם נמצאים מכונות ה-VM. ‫VM Extension Manager מחיל את המדיניות על המכונות הווירטואליות באזור ובאזור המשנה שנבחרו.
  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"
}
}

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