אפשר ליצור ולנהל מדיניות של סוכנים באמצעות קבוצת הפקודות gcloud beta compute instances ops-agents policies ב-Google Cloud CLI או באמצעות מודול Terraform agent-policy.
כללי מדיניות של סוכנים משתמשים בחבילת הכלים VM Manager ב-Compute Engine כדי לנהל כללי מדיניות של מערכת הפעלה, שיכולים להפוך את הפריסה והתחזוקה של הגדרות תוכנה לאוטומטיות, כמו הסוכנים של Google Cloud Observability: סוכן תפעול, legacy Monitoring agent ו-סוכן Logging.
יצירת מדיניות של סוכן
בקטע הזה מתואר השימוש ב-Google Cloud SDK לניהול מדיניות סוכנים. מידע על שימוש ב-Terraform זמין במאמר שילוב של Terraform.
כדי ליצור מדיניות סוכן באמצעות Google Cloud CLI, מבצעים את השלבים הבאים:
אם עוד לא עשיתם זאת, התקינו את Google Cloud CLI.
מדיניות הסוכן שמתוארת במסמך הזה משתמשת בקבוצת הפקודות
beta.אם עדיין לא עשיתם זאת, מתקינים את הרכיב
betaשל ה-CLI של gcloud:gcloud components install betaכדי לבדוק אם רכיב
betaמותקן, מריצים את הפקודה:gcloud components listאם כבר התקנתם את רכיב
beta, צריך לוודא שפועלת אצלכם הגרסה העדכנית ביותר:gcloud components updateמורידים את הסקריפט הבא ומשתמשים בו כדי להפעיל את ממשקי ה-API ולהגדיר את ההרשאות המתאימות לשימוש ב-Google Cloud CLI:
set-permissions.sh.מידע על הסקריפט מופיע במאמר הסקריפט
set-permissions.sh.משתמשים בפקודה
gcloud beta compute instances ops-agents policiescreateכדי ליצור מדיניות. למידע על התחביר של הפקודה, אפשר לעיין בתיעוד שלgcloud beta compute instances ops-agents policiescreate.דוגמאות לפורמט הפקודה מופיעות בקטע דוגמאות במסמכי התיעוד של Google Cloud CLI.
מידע נוסף על הפקודות האחרות בקבוצת הפקודות ועל האפשרויות הזמינות מופיע במאמרי העזרה בנושא
gcloud beta compute instances ops-agents policies.
שיטות מומלצות לשימוש במדיניות סוכנים
כדי לשלוט בהשפעה על מערכות הייצור במהלך ההשקה, מומלץ להשתמש בתוויות של מופעים ובאזורים כדי לסנן את המופעים שהמדיניות חלה עליהם.
אם אתם יוצרים מדיניות עבור סוכן התפעול, ודאו שלא מותקן במכונות הווירטואליות שלכם סוכן Logging מדור קודם או סוכן Monitoring. הפעלת סוכן תפעול והסוכנים הקודמים באותה מכונה וירטואלית עלולה לגרום להוספה של יומנים כפולים או להתנגשות בהוספה של מדדים. אם צריך, מסירים את סוכן הניטור ומסירים את סוכן רישום הפעולות ביומן לפני שיוצרים מדיניות להתקנת סוכן התפעול.זוהי דוגמה לתוכנית השקה מדורגת של מכונות וירטואליות של Debian 11 בפרויקט בשם my_project:
שלב 1: יוצרים מדיניות בשם ops-agents-policy-safe-rollout להתקנת סוכן התפעול בכל מכונות ה-VM עם התוויות env=test ו-app=myproduct.
gcloud beta compute instances \
ops-agents policies create ops-agents-policy-safe-rollout \
--agent-rules="type=ops-agent,version=current-major,package-state=installed,enable-autoupgrade=true" \
--os-types=short-name=debian,version=11 \
--group-labels=env=test,app=myproduct \
--project=my_project
מידע נוסף על ציון מערכת ההפעלה זמין במאמר בנושא gcloud beta compute instances ops-agents policies create.
שלב 2: מעדכנים את המדיניות כך שתכוון למכונות וירטואליות באזור יחיד עם התוויות env=prod ו-app=myproduct.
gcloud beta compute instances \
ops-agents policies update ops-agents-policy-safe-rollout \
--group-labels=env=prod,app=myproduct \
--zones=us-central1-c \
שלב 3: מעדכנים את המדיניות כדי לנקות את המסנן של האזורים, וכך המדיניות תופעל באופן גלובלי
gcloud beta compute instances \
ops-agents policies update ops-agents-policy-safe-rollout \
--clear-zones
כללי מדיניות במכונות וירטואליות שנוצרו לפני OS Config
יכול להיות שתצטרכו להתקין ולהגדיר ידנית את הסוכן של OS Config במכונות וירטואליות שנוצרו לפני OS Config. מידע על התקנה ידנית ואימות של הסוכן OS Config זמין ברשימת המשימות לאימות של VM Manager.
פתרון בעיות במדיניות של סוכנים בגרסת בטא
בקטע הזה מוסבר איך לפתור בעיות שקשורות למדיניות של סוכני בטא של סוכן תפעול, של סוכן המעקב מדור קודם ושל סוכן Logging מדור קודם.
הפקודות ops-agents policy נכשלות
כשפקודת gcloud beta compute instances ops-agents policies נכשלת, בתשובה מוצגת שגיאת אימות. מתקנים את השגיאות על ידי תיקון הארגומנטים והדגלים של הפקודה, כמו שמוצע בהודעת השגיאה.
בנוסף לשגיאות האימות, יכול להיות שיוצגו שגיאות שמצביעות על התנאים הבאים:
בקטעים הבאים מפורטים התנאים האלה.
הרשאת IAM לא מספיקה
אם פקודת gcloud beta compute instances ops-agents policies נכשלת עם שגיאת הרשאה, צריך לוודא שהפעלתם את סקריפט set-permissions.sh כמו שמתואר במאמר יצירת מדיניות של סוכן כדי להגדיר את תפקידי המדיניות של OS Config:
-
אדמין של מדיניות אורחים (
roles/osconfig.guestPolicyAdmin): מספק גישה מלאה למדיניות אורחים. -
עריכת מדיניות לאורחים (
roles/osconfig.guestPolicyEditor): מאפשרת למשתמשים לקבל, לעדכן ולרשום מדיניות לאורחים. -
צפייה ב-GuestPolicy (
roles/osconfig.guestPolicyViewer): מעניק גישה לקריאה בלבד כדי לקבל ולרשום מדיניות של אורחים.
מידע נוסף על סקריפט set-permissions.sh זמין במאמר בנושא סקריפט set-permissions.sh.
OS Config API לא מופעל
דוגמה לשגיאה:
API [osconfig.googleapis.com] not enabled on project PROJECT_ID.
Would you like to enable and retry (this will take a few minutes)?
(y/N)?
אפשר להזין y כדי להפעיל את ה-API, או להריץ את הסקריפט set-permissions.sh שמתואר במאמר יצירת מדיניות לסוכן כדי לתת את כל ההרשאות הנדרשות. אם מזינים y בהנחיה בהודעת השגיאה, עדיין צריך להריץ את הסקריפט set-permissions.sh כדי להגדיר את ההרשאות הנדרשות.
כדי לוודא ש-OS Config API מופעל בפרויקט, מריצים את הפקודות הבאות:
gcloud services list --project PROJECT_ID | grep osconfig.googleapis.com
הפלט הצפוי:
osconfig.googleapis.com Cloud OS Config API
המדיניות כבר קיימת
דוגמה לשגיאה:
ALREADY_EXISTS: Requested entity already exists
השגיאה הזו מציינת שהמדיניות הזו כבר קיימת עם אותו שם, מזהה פרויקט ואזור. כדי לוודא את זה, אפשר להשתמש בפקודה gcloud beta compute instances ops-agents policies describe.
המדיניות לא קיימת
דוגמה לשגיאה:
NOT_FOUND: Requested entity was not found
יכול להיות שהשגיאה הזו מציינת שהמדיניות מעולם לא נוצרה, שהמדיניות נמחקה או שמזהה המדיניות שצוין שגוי. חשוב לוודא שהתווית POLICY_ID שבה משתמשים בפקודה gcloud beta compute instances ops-agents policies describe, update או delete תואמת למדיניות קיימת. כדי לראות את רשימת כללי המדיניות של הסוכן, משתמשים בפקודה gcloud beta compute instances ops-agents policies list.
המדיניות נוצרת, אבל נראה שאין לה השפעה
סוכני OS Config נפרסים בכל מכונה וירטואלית ב-Compute Engine כדי לנהל את החבילות של סוכני רישום ביומן ומעקב. יכול להיות שלמדיניות לא תהיה השפעה אם סוכן ההגדרה של מערכת ההפעלה הבסיסית לא מותקן.
Linux
כדי לוודא שהסוכן של OS Config מותקן, מריצים את הפקודה הבאה:
gcloud compute ssh instance-id \
--project project-id \
-- sudo systemctl status google-osconfig-agent
פלט לדוגמה:
google-osconfig-agent.service - Google OSConfig Agent
Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
Main PID: 369 (google_osconfig)
Tasks: 8 (limit: 4374)
Memory: 102.7M
CGroup: /system.slice/google-osconfig-agent.service
└─369 /usr/bin/google_osconfig_agent
Windows
כדי לוודא שהסוכן של OS Config מותקן, מבצעים את השלבים הבאים:
מתחברים למופע באמצעות RDP או כלי דומה ומתחברים ל-Windows.
פותחים טרמינל ב-PowerShell ומריצים את פקודת PowerShell הבאה. לא צריך הרשאות אדמין.
Get-Service google_osconfig_agent
פלט לדוגמה:
Status Name DisplayName
------ ---- -----------
Running google_osconfig_a… Google OSConfig Agent
אם סוכן OS Config לא מותקן, יכול להיות שאתם משתמשים במערכת הפעלה שלא תומכת ב-VM Manager. במסמך פרטים על מערכת ההפעלה של Compute Engine מצוין אילו תכונות של VM Manager נתמכות בכל מערכת הפעלה של Compute Engine.
אם מערכת ההפעלה תומכת ב-VM Manager, אפשר להתקין את הסוכן של OS Config באופן ידני.
הסוכן OS Config מותקן, אבל הוא לא מתקין את סוכן התפעול
כדי לבדוק אם יש שגיאות כשסוכן OS Config מחיל מדיניות, אפשר לבדוק את היומן של סוכן OS Config. אפשר לעשות את זה באמצעות Logs Explorer או באמצעות SSH או RDP כדי לבדוק מקרים ספציפיים של Compute Engine.
כדי לראות את היומנים של הסוכן OS Config ב-Logs Explorer, משתמשים במסנן הבא:
resource.type="gce_instance"
logId(OSConfigAgent)
כדי לראות את היומנים של הסוכן OS Config:
CentOS, RHEL,
SLES, SUSE
מריצים את הפקודה הבאה:
gcloud compute ssh INSTANCE_ID \
--project PROJECT_ID \
-- sudo cat /var/log/messages \
| grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
Debian, Ubuntu
מריצים את הפקודה הבאה:
gcloud compute ssh INSTANCE_ID \
--project PROJECT_ID \
-- sudo cat /var/log/syslog \
| grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"
Windows
מתחברים למופע באמצעות RDP או כלי דומה ומתחברים ל-Windows.
פותחים את האפליקציה 'צפייה באירועים', בוחרים באפשרות יומני Windows > אפליקציה ומחפשים יומנים עם
Sourceששווה ל-OSConfigAgent.
אם יש שגיאה בחיבור לשירות OS Config, צריך להריץ את הסקריפט set-permissions.sh כמו שמתואר במאמר יצירת מדיניות של סוכן כדי להגדיר את המטא-נתונים של OS Config.
כדי לוודא שהמטא-נתונים של OS Config מופעלים, אפשר להריץ את הפקודה הבאה:
gcloud compute project-info describe \
--project PROJECT_ID \
| grep "enable-osconfig\|enable-guest-attributes" -A 1
הפלט הצפוי:
- key: enable-guest-attributes
value: 'TRUE'
- key: enable-osconfig
value: 'TRUE'
הסוכנים של Observability מותקנים, אבל לא פועלים כמו שצריך
מידע על ניפוי באגים של סוכנים ספציפיים זמין במאמרים הבאים:
- פתרון בעיות שקשורות לסוכן התפעול
- פתרון בעיות בסוכן Logging מדור קודם
- פתרון בעיות בגרסה הקודמת של סוכן המעקב
הפעלת יומנים ברמת ניפוי הבאגים עבור הסוכן של OS Config
כדאי להפעיל רישום ביומן ברמת ניפוי הבאגים בסוכן OS Config כשמדווחים על בעיה.
אפשר להגדיר את המטא-נתונים osconfig-log-level: debug כדי להפעיל רישום ביומן ברמת ניפוי הבאגים עבור הסוכן OS Config. ביומנים שנאספו יש מידע נוסף שיכול לעזור בחקירה.
כדי להפעיל רישום ביומן ברמת ניפוי הבאגים לכל הפרויקט, מריצים את הפקודה הבאה:
gcloud compute project-info add-metadata \
--project PROJECT_ID \
--metadata osconfig-log-level=debug
כדי להפעיל רישום ביומן ברמת ניפוי הבאגים עבור מכונת VM אחת, מריצים את הפקודה הבאה:
gcloud compute instances add-metadata INSTANCE_ID \
--project PROJECT_ID \
--metadata osconfig-log-level=debug
סקריפטים של עזרה
בקטע הזה מופיע מידע נוסף על סקריפטים של עזרה שמתוארים במסמך הזה:
הסקריפט set-permissions.sh
אחרי שמורידים את הסקריפט set-permissions.sh, אפשר להשתמש בו כדי לבצע את הפעולות הבאות, על סמך הארגומנטים שמספקים:
מפעילים בפרויקט את Cloud Logging API, את Cloud Monitoring API ואת OS Config API.
מקצים את התפקידים Logs Writer (כתיבת יומנים) (
roles/logging.logWriter) ו-Monitoring Metric Writer (כתיבת מדדים ב-Monitoring) (roles/monitoring.metricWriter) בניהול הזהויות והרשאות הגישה (IAM) לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, כדי שהסוכנים יוכלו לכתוב יומנים ומדדים ב-Logging וב-Cloud Monitoring APIs.מפעילים את המטא-נתונים של OS Config בפרויקט כדי שהסוכן OS Config בכל מכונה וירטואלית יהיה פעיל.
נותנים למשתמשים או לחשבונות השירות שאינם בעלים את אחד מתפקידי ה-IAM הבאים שנדרשים ליצירה ולניהול של מדיניות. לבעלי הפרויקט יש גישה מלאה ליצירה ולניהול של מדיניות. כל שאר המשתמשים או חשבונות השירות צריכים לקבל אחד מהתפקידים הבאים:
-
אדמין של מדיניות אורחים (
roles/osconfig.guestPolicyAdmin): מספק גישה מלאה למדיניות אורחים. -
עריכת מדיניות לאורחים (
roles/osconfig.guestPolicyEditor): מאפשרת למשתמשים לקבל, לעדכן ולרשום מדיניות לאורחים. -
צפייה ב-GuestPolicy (
roles/osconfig.guestPolicyViewer): מעניק גישה לקריאה בלבד כדי לקבל ולרשום מדיניות של אורחים.
כשמריצים את הסקריפט, צריך לציין רק את החלק
guestPolicy*של שם התפקיד. הסקריפט מספק את החלקroles/osconfig.בשם.-
אדמין של מדיניות אורחים (
בדוגמאות הבאות מוצגים כמה שימושים נפוצים בסקריפט. מידע נוסף מופיע בהערות בתסריט עצמו.
כדי להפעיל את ממשקי ה-API, צריך להקצות את התפקידים הנדרשים לחשבון השירות שמוגדר כברירת מחדל ולהפעיל את המטא-נתונים של OS Config בפרויקט. כדי לעשות זאת, מריצים את הסקריפט באופן הבא:
bash set-permissions.sh --project=PROJECT_ID
כדי להעניק בנוסף אחד מהתפקידים של OS Config למשתמש שאין לו את התפקיד Owner (roles/owner) בפרויקט, מריצים את הסקריפט באופן הבא:
bash set-permissions.sh --project=PROJECT_ID \ --iam-user=USER_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
כדי להקצות בנוסף אחד מתפקידי OS Config לחשבון שירות שאינו ברירת המחדל, מריצים את הסקריפט באופן הבא:
bash set-permissions.sh --project=PROJECT_ID \ --iam-service-account=SERVICE_ACCT_EMAIL \ --iam-permission-role=guestPolicy[Admin|Editor|Viewer]
הסקריפט diagnose.sh
בהינתן מזהה פרויקט, מזהה מכונה של Compute Engine ומזהה מדיניות של הסוכן, סקריפט diagnose.sh אוסף באופן אוטומטי את המידע הדרוש כדי לאבחן בעיות במדיניות:
- גרסת הסוכן של OS Config
- מדיניות האורחים הבסיסית של OS Config
- המדיניות שחלה על מכונת Compute Engine הזו
- מאגרי חבילות של סוכנים שנשלפים למכונה הזו ב-Compute Engine
כדי להפעיל את הסקריפט, מריצים את הפקודה הבאה:
bash diagnose.sh --project-id=PROJECT_ID \ --gce-instance-id=INSTANCE_ID \ --policy-id=POLICY_ID
שילוב עם Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform. מידע על אופן הפעולה של Terraform זמין במאמר שימוש ב-Terraform.
התמיכה ב-Terraform במדיניות של סוכנים מבוססת על פקודות Google Cloud CLI. כדי ליצור מדיניות של סוכן באמצעות Terraform, פועלים לפי ההוראות של מודול Terraform agent-policy.
אפשר למצוא דוגמאות למדיניות גם בספרייה examples.