שימוש במדיניות אורחים כדי לשמור על הגדרות תוכנה עקביות במכונות וירטואליות (VM) של Linux ו-Windows.
כדי להגדיר מדיניות אורח בקבוצה של מכונות וירטואליות, מבצעים את השלבים הבאים:
- מקצים למשתמשים את ההרשאות הנדרשות.
- הגדרת המכונה הווירטואלית.
- מגדירים את מדיניות האורחים בקובץ JSON או YAML.
- יוצרים את מדיניות האורחים.
לפני שמתחילים
- בודקים את המכסות של OS Config.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
מגבלות
- במכונות הווירטואליות המטורגטות, מדיניות האורח מתעדכנת בכל פעם שהסוכן מתחבר לשירות. הבדיקה הזו מתבצעת כל 10 עד 15 דקות.
- אין לוחות בקרה, התראות או שירותי התראה בנושא תאימות שזמינים עם מדיניות האורחים של מערכת ההפעלה מדור קודם. מכונות וירטואליות שלא מריצות את סוכן OS Config לא מדווחות על כשל. כדי להשיג את התוצאות הטובות ביותר, מומלץ להשתמש בתכונה הזו עם השירות OS inventory management או עם כלי אחר למעקב אחרי תאימות.
מתכון תוכנה עם שם ספציפי מופעל רק פעם אחת כשיוצרים מדיניות לאורחים. כדי להריץ מחדש מתכון תוכנה, צריך לבצע את הפעולות הבאות:
- משנים את השם של מתכון התוכנה.
- מוחקים את מדיניות האורח ויוצרים אותה מחדש באמצעות מתכון התוכנה ששמו שונה.
הרשאות
מכיוון שאפשר להשתמש במדיניות של מערכת הפעלה אורחת כדי להתקין חבילות תוכנה במכונה וירטואלית ולנהל אותן, יצירה וניהול של מדיניות של מערכת הפעלה אורחת שווים למתן גישה להרצת קוד מרחוק במכונה וירטואלית.
כשמגדירים מדיניות אורחים, נעשה שימוש בהרשאות IAM כדי לשלוט בגישה למשאב המדיניות, והפעילויות מתועדות ביומן הביקורת. עם זאת, המשתמשים עדיין יכולים להריץ קוד במכונה הווירטואלית, מה שיוצר סיכון אבטחה פוטנציאלי. כדי לצמצם את הסיכון, מומלץ לתת לכל משתמש רק את הגישה הנדרשת.
לבעלים של פרויקט יש גישה מלאה ליצירה ולניהול של מדיניות. לכל שאר המשתמשים, צריך להעניק הרשאות. אפשר להקצות את אחד מהתפקידים הבאים עם הרשאות מפורטות:
- אדמין של GuestPolicy (
roles/osconfig.guestPolicyAdmin). מכיל הרשאות ליצירה, למחיקה, לעדכון, לקבלת מידע ולרישום של מדיניות אורחים. - הכלי לעריכת מדיניות למשתתפים (
roles/osconfig.guestPolicyEditor). מכיל הרשאות לקבלת מדיניות למשתתפים, לעדכון שלה ולצפייה ברשימה שלה. - GuestPolicy Viewer (
roles/osconfig.guestPolicyViewer). מכיל הרשאות לגישה לקריאה בלבד כדי לקבל ולרשום מדיניות של מכונות אורחות.
לדוגמה, כדי להעניק למשתמש אדמין גישה למדיניות אורחים, מריצים את הפקודה הבאה:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member user:USER_ID@gmail.com \
--role roles/osconfig.guestPolicyAdmin
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
USER_ID: שם המשתמש של המשתמש ב-Google Workspace.
הגדרת מכונה וירטואלית
כדי להשתמש בכללי מדיניות האורחים, צריך להגדיר את VM Manager.
הגדרת קובץ YAML או JSON של מדיניות אורח
צריך לספק את המפרטים של מדיניות האורחים באמצעות קובץ JSON או YAML. כדי לראות דוגמאות להגדרות, אפשר לעיין בקובצי YAML לדוגמה של מדיניות אורח.
קובץ ה-YAML או ה-JSON מכיל את שני החלקים העיקריים הבאים:
- קטע ההקצאה שמכיל את רשימת המכונות הווירטואליות לטירגוט.
- הקטע required configuration, שמכיל את המצב שרוצים לשמור במכונות הווירטואליות.
מטלות
אתם יכולים להקצות מדיניות אורחים לכל המכונות הווירטואליות בפרויקט, או להשתמש במפתח assignment בקובץ JSON או YAML כדי לטרגט קבוצה ספציפית של מכונות וירטואליות.
לדוגמה, אפשר לטרגט קבוצה של מכונות וירטואליות באמצעות כל אחת מהמאפיינים הבאים:
- שם המכונה. דוגמה 1.
- תחילית של שם המכונה. דוגמה 2.
- תווית המופע. דוגמה 3
- אזור. דוגמה 4.
- פרטי מערכת ההפעלה, כולל השם, הגרסה והארכיטקטורה של מערכת ההפעלה. דוגמה 5 אפשר להשתמש בפקודה os-inventory describe כדי לקבוע את השם, הגרסה והארכיטקטורה של מערכת ההפעלה של מכונות וירטואליות.
כדי להקצות מדיניות לאורח באמצעות מידע על מערכת ההפעלה, סוכן ההגדרות של מערכת ההפעלה צריך לשלוח מידע על מערכת ההפעלה לנקודת הקצה של מאפייני האורח של המכונה הווירטואלית. כדי להבטיח פרטיות, כברירת מחדל, מידע על מערכת ההפעלה של מכונות וירטואליות לא זמין. כדי לקבץ מכונות וירטואליות לפי פרטי מערכת ההפעלה, צריך לוודא שמאפייני האורח ושירותי OS Inventory Management מופעלים. במאמר הגדרת המכונה הווירטואלית מוסבר איך להפעיל את השירותים האלה.
ההגדרות של מדיניות האורחים חלות באופן אוטומטי על כל המכונות הווירטואליות החדשות שתואמות להקצאה.
הגדרה נדרשת
כדי לבצע את ההגדרה הנדרשת, אפשר להשתמש באחת מהמשימות הבאות או בשילוב שלהן:
- התקנה, הסרה ועדכון אוטומטי של חבילות תוכנה. דוגמה 1
- להגדיר מאגרים של חבילות תוכנה. דוגמה 1 או דוגמה 3
- התקנת תוכנה באמצעות מתכוני תוכנה.
דוגמאות לקובצי YAML של מדיניות אורחים
דוגמה 1
צריך להתקין את החבילה my-package ולדאוג שהיא תהיה מעודכנת במכונות הווירטואליות הבאות: my-instance-1 ו-my-instance-2.
assignment: instances: - zones/us-east1-c/instances/my-instance-1 - zones/us-east1-c/instances/my-instance-2 packages: - name: "my-package" desiredState: UPDATED
למידע נוסף על הקצאת מדיניות לאורחים בחבילות, אפשר לעיין במסמך העזר בנושא ייצוג JSON של חבילות.
דוגמה 2
מתקינים את סוכן Cloud Monitoring באמצעות מנהל החבילות yum בכל מכונות ה-VM שיש להן אחת מהקידומות הבאות לשם המכונה: test-instance- או dev-instance-.
assignment:
instanceNamePrefixes:
- "test-instance-"
- "dev-instance-"
packages:
- name: "stackdriver-agent"
desiredState: INSTALLED
manager: YUM
packageRepositories:
- yum:
id: google-cloud-monitoring
displayName: "Google Cloud Monitoring Agent Repository"
baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el7-x86_64-all
gpgKeys:
- https://packages.cloud.google.com/yum/doc/yum-key.gpg
- https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
למידע נוסף על הקצאת מדיניות אורח למאגרי חבילות, קראו את מאמר העזרה ייצוג JSON של PackageRepository.
דוגמה 3
התקנה של my-package והסרה של bad-package-1 ושל
bad-package-2 ממופעים עם קבוצה ספציפית של תוויות. מוסיפים גם מאגרי מידע
למנהלי החבילות apt ו-yum.
assignment:
# Assign to VM instances where `(label.color=red AND label.env=test) OR (label.color=blue AND label.env=test)`
groupLabels:
- labels:
color: red
env: test
- labels:
color: blue
env: test
packages:
- name: "my-package"
desiredState: INSTALLED
- name: "bad-package-1"
desiredState: REMOVED
- name: "bad-package-2"
desiredState: REMOVED
manager: APT # Only apply this to systems with APT.
packageRepositories:
- apt: # Only apply this to systems with APT.
uri: "https://packages.cloud.google.com/apt"
archiveType: DEB
distribution: cloud-sdk-stretch
components:
- main
- yum: # Only apply this to systems with YUM.
id: google-cloud-sdk
displayName: "Google Cloud SDK"
baseUrl: https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
gpgKeys:
- https://packages.cloud.google.com/yum/doc/yum-key.gpg
- https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
- למידע נוסף על הקצאת מדיניות לאורחים בחבילות, אפשר לעיין במסמך העזר בנושא ייצוג JSON של חבילות.
- מידע נוסף על הקצאת מדיניות לאורחים למאגרי חבילות זמין במאמר בנושא ייצוג JSON של PackageRepository.
דוגמה 4
התקנת תוכנה מ-MSI שמתארח ב-Cloud Storage בכל המכונות ב-us-east1-b וב-us-east1-d.
assignment:
zones:
- us-east1-b
- us-east1-d
recipes:
- name: "swr-msi-gcs"
desiredState: INSTALLED
artifacts:
- id: "the-msi"
gcs:
bucket: "my-bucket"
object: "executable.msi" # full URI gs://my-bucket/executable.msi#nnnnn
generation: 1546030865175603
installSteps:
- msiInstallation:
artifactId: "the-msi"
מידע נוסף על הגדרת מדיניות של מתכוני תוכנה מופיע במסמך העזר בנושא ייצוג JSON של SoftwareRecipe.
דוגמה 5
כדי להתקין תוכנה, מריצים סקריפט מוטבע בכל מכונות ה-VM שעומדות בדרישות הבאות:
- מערכת הפעלה: Red Hat Enterprise Linux 7
- תווית:
color=red
assignment:
osTypes:
- osShortName: rhel
osVersion: "7"
groupLabels:
- labels:
color: red
recipes:
- name: recipe-runscript
desiredState: INSTALLED
installSteps:
- scriptRun:
script: |-
#!/bin/bash
touch /TOUCH_FILE
מידע נוסף על הגדרת מדיניות של מתכוני תוכנה מופיע במסמך העזר בנושא ייצוג JSON של SoftwareRecipe.
דוגמה 6
התקנת האפליקציה בכל המכונות של Windows באמצעות מנהל התקנה בר-הרצה עם התחילית הבאה של שם המכונה: test-instance-.
assignment:
instanceNamePrefixes:
- "test-instance-"
osTypes:
- osShortName: WINDOWS
recipes:
- name: windows-install-exe-example
desiredState: INSTALLED
artifacts:
- id: installer
gcs:
bucket: my-bucket
generation: '1597013478912389'
object: MyApp.Installer.x64.exe
installSteps:
- fileExec:
artifactId: installer
args:
- /S # Installation must be silent
מידע נוסף על הגדרת מדיניות של מתכוני תוכנה מופיע במסמך העזר בנושא ייצוג JSON של SoftwareRecipe.
יצירת מדיניות אורחים
כשיוצרים מדיניות לאורחים, השם של המדיניות צריך לעמוד בדרישות הבאות:
- להכיל רק אותיות קטנות, מספרים ומקפים
- להתחיל באות
- להסתיים בספרה או באות
- להכיל בין תו אחד ל-63 תווים
- כל מזהה מדיניות חייב להיות ייחודי במסגרת פרויקט
כדי ליצור מדיניות אורח, אפשר להשתמש באחת מהשיטות הבאות.
gcloud
כדי ליצור מדיניות אורחים, משתמשים בפקודה os-config guest-policies create.
gcloud beta compute os-config guest-policies create POLICY_ID \
--file=FILE
מחליפים את מה שכתוב בשדות הבאים:
-
POLICY_ID: השם של מדיניות האורחים שרוצים ליצור. -
FILE: קובץ JSON או YAML שמכיל את המפרטים של מדיניות האורחים. כדי לראות הגדרות לדוגמה, אפשר לעיין בקובצי YAML לדוגמה של מדיניות אורחים.
REST
ב-API, יוצרים בקשת POST ל-method projects.guestPolicies.create.
POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID
{
For more information, see Guest policy JSON
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט.POLICY_ID: השם של מדיניות האורחים.
כדי לראות דוגמאות להגדרות, אפשר לעיין בקובצי YAML לדוגמה של מדיניות אורח.
פתרון בעיות
כדי לפתור בעיות שקשורות למדיניות אורחים, אפשר לעיין במאמר בנושא ניפוי באגים במדיניות אורחים.