במאמר הזה מתואר סקריפט שמאפשר לעבד אירועים של תקינות השירות בכל פרויקט בארגון או בתיקייה. התפקיד הזה מעניק לחשבון המשתמש בניהול זהויות והרשאות גישה (IAM) שצוין את התפקיד 'צפייה בסטטוס השירות', שמאפשר לראות אירועים ולהפעיל את Service Health API.
לפני שמתחילים
מוודאים שהחיוב מופעל בפרויקט Google Cloud .
ודאו שיש לכם את ההרשאות הבאות להפעלת הסקריפט:
- הרשאה להצגת רשימת הפרויקטים בהיררכיה של ההורה:
resourcemanager.projects.list. - הרשאה להוספת IAM (התפקיד Service Health Viewer) עבור חשבון ה-IAM שצוין:
resourcemanager.projects.setIamPolicy. - הרשאה להפעלת שירותים Google Cloud :
serviceusage.services.enable.
דרך אחת לקבל את ההרשאות האלה היא לבקש מאדמין להקצות לכם תפקיד מתאים. מחפשים את ההרשאות בקטע תפקידים מוגדרים מראש בדף העזר בנושא תפקידים בסיסיים ומוגדרים מראש ב-IAM. יופיעו התפקידים שיש להם את ההרשאות.
הפעלת הסקריפט
הסקריפט מקבל את הפרמטרים הבאים:
-
PARENT_ID: המזהה של ההורה של הפרויקטים. המזהה יכול להיות של ארגון או של תיקייה. התכונה 'Service Health בהתאמה אישית' תופעל בכל הפרויקטים שמוגדרים מתחת לפרויקט האב. (אופציונלי)
IAM_PRINCIPAL: מזהה של ישות מורשית או גורם שיוקצה לו התפקיד 'צפייה ב-Service Health'. בדרך כלל הוא מופיע בפורמט הבא:PRINCIPAL_TYPE:ID. דוגמה:user:my-user@example.com.רשימה מלאה של הערכים הנתמכים מופיעה בקטע הקצאת תפקיד יחיד בדף בנושא ניהול גישה לפרויקטים, לתיקיות ולארגונים.
כדי להריץ את הסקריפט:
- בוחרים את API VERSION:
v1אוv1beta. מדביקים את הסקריפט הבא לקובץ:
#!/bin/bash PARENT_ID="$1" PRINCIPAL="$2" FAILED_PROJECTS=() for project in $(gcloud projects list --filter="parent.id: ${PARENT_ID}" --format="value(projectId)") do echo "Enabling PSH API for project $project" gcloud services enable servicehealth.googleapis.com --project="${project}" echo "Finished enabling PSH API for project $project" if [[ -n "$PRINCIPAL" ]]; then echo "Adding $PRINCIPAL as service health viewer to project $project" gcloud projects add-iam-policy-binding "${project}" --member "${PRINCIPAL}" --role roles/servicehealth.viewer echo "Finished adding $PRINCIPAL as service health viewer to project $project" sleep 5 else echo "PRINCIPAL not provided, will not grant service health viewer role. Please provide a PRINCIPAL value in order to view events." fi echo "Attempt to list events from Personalized Service Health for project $project" RESPONSE="$(curl -w "%{http_code}" -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://servicehealth.googleapis.com/API VERSION/projects/"${project}"/locations/global/events)" HTTP_CODE=$(tail -n1 <<< "$RESPONSE") if [[ "$HTTP_CODE" -ne 200 ]] ; then echo "Failed to list events for project $project" echo "Response: $RESPONSE" FAILED_PROJECTS+=($project) else echo "Successfully listed events for project $project" fi done if [[ "${#FAILED_PROJECTS[@]}" -ne 0 ]]; then echo "Listing projects that failed to activate" for project in "${FAILED_PROJECTS[@]}" do echo "$project" done fiמריצים את הסקריפט. בדוגמאות הבאות מניחים שהסקריפט נמצא בקובץ בשם
activateProjects.sh:כדי להפעיל את כל הפרויקטים בארגון עם מזהה
345678901ולהעניק למשתמשuser:test-user@gmail.comאת התפקידroles/servicehealth.viewer, מריצים את הפקודה:bash activateProjects.sh 345678901 "user:test-user@gmail.com"כדי להפעיל את כל הפרויקטים בארגון עם מזהה
345678901ולהעניק לחשבון השירותserviceAccount:test-proj1@example.domain.comאת התפקידroles/servicehealth.viewer, מריצים את הפקודה:bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
יחלפו עד 24 שעות עד שהמערכת תתחיל לעבד אירועים שקשורים לסטטוס השירות ב-Service Health בהתאמה אישית.