Personalized Service Health für alle Projekte in einer Organisation oder einem Ordner aktivieren

In diesem Dokument wird ein Script beschrieben, mit dem jedes Projekt in einer Organisation oder einem Ordner für die Verarbeitung von Dienststatusereignissen aktiviert wird. Sie ordnet dem angegebenen IAM-Hauptkonto (Identity and Access Management) die Rolle „Service Health Viewer“ zu. Damit können Sie Ereignisse ansehen und die Service Health API aktivieren.

Hinweise

Überprüfen Sie, ob Sie die folgenden Berechtigungen haben:

  • Berechtigung, Projekte unter dem übergeordneten Element aufzulisten: resourcemanager.projects.list.
  • Berechtigung zum Hinzufügen einer IAM-Rolle (Rolle „Betrachter der Dienstbereitschaft“) für den angegebenen IAM-Subjekt: resourcemanager.projects.setIamPolicy.
  • Berechtigung zum Aktivieren von Google Cloud -Diensten: serviceusage.services.enable.

So prüfen Sie, mit welchen Rollen Sie das Script ausführen können:

  1. Rufen Sie auf der Seite „Referenz für einfache und vordefinierte IAM-Rollen“ den Abschnitt Vordefinierte Rollen auf.
  2. Suchen Sie nach der gewünschten Berechtigung. Die Rollen mit der Berechtigung werden angezeigt.

Skript ausführen

Das Script akzeptiert die folgenden Parameter:

  • PARENT_ID: ID des übergeordneten Projekts. Die ID kann für eine Organisation oder einen Ordner sein. Für alle Projekte unter dem übergeordneten Projekt ist die personalisierte Dienstgesundheit aktiviert.
  • Optional: IAM_PRINCIPAL: Eine Kennung für das Hauptkonto oder Mitglied, dem die Rolle „Betrachter der Dienstbereitschaft“ gewährt wird. Sie hat normalerweise das folgende Format: PRINCIPAL_TYPE:ID. Beispiel:user:my-user@example.com.

    Eine vollständige Liste der unterstützten Werte finden Sie auf der Seite „Zugriff auf Projekte, Ordner und Organisationen verwalten“ im Abschnitt Eine Rolle zuweisen.

So führen Sie das Skript aus:

  1. Legen Sie die API VERSION fest: v1 oder v1beta.
  2. Fügen Sie das folgende Script in eine Datei ein:

    #!/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. Führen Sie das Skript aus. In den folgenden Beispielen wird davon ausgegangen, dass sich das Script in einer Datei namens activateProjects.sh befindet:

    • Wenn Sie alle Projekte mit der Organisations-ID 1111111111 aktivieren und dem Nutzer user:test-user@gmail.com die Rolle roles/servicehealth.viewer zuweisen möchten, führen Sie Folgendes aus:

      bash activateProjects.sh 1111111111 "user:test-user@gmail.com"
      
    • Wenn Sie alle Projekte mit der Organisations-ID 1111111111 aktivieren und dem Dienstkonto serviceAccount:test-proj1@example.domain.com die Rolle roles/servicehealth.viewer zuweisen möchten, führen Sie Folgendes aus:

      bash activateProjects.sh 1111111111 "serviceAccount:test-proj1@example.domain.com"
      

Es kann bis zu 24 Stunden dauern, bis Personalized Service Health mit der Verarbeitung von Dienststatusereignissen beginnt.