הפעלת המרכז האישי ב-Service Health לכל הפרויקטים בארגון או בתיקייה

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

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

כדי להריץ את הסקריפט:

  1. בוחרים את API VERSION: v1 או v1beta.
  2. מדביקים את הסקריפט הבא לקובץ:

    #!/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
    
  3. מריצים את הסקריפט. בדוגמאות הבאות מניחים שהסקריפט נמצא בקובץ בשם 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 בהתאמה אישית.