Abilita Personalized Service Health per tutti i progetti di un'organizzazione o di una cartella

Questo documento descrive uno script che attiva ogni progetto in un'organizzazione o in una cartella per l'elaborazione degli eventi relativi allo stato del servizio. Concede all'entità IAM (Identity and Access Management) specificata il ruolo visualizzatore di Service Health, che ti consente di visualizzare gli eventi e attivare l'API Service Health.

Prima di iniziare

Assicurati di disporre delle seguenti autorizzazioni:

  • Autorizzazione per elencare i progetti nel progetto principale: resourcemanager.projects.list.
  • Autorizzazione per aggiungere IAM (ruolo Visualizzatore stato servizio) per il principale IAM specificato: resourcemanager.projects.setIamPolicy.
  • Autorizzazione per attivare i servizi Google Cloud : serviceusage.services.enable.

Per verificare i ruoli che puoi utilizzare per eseguire lo script:

  1. Vai alla sezione Ruoli predefiniti della pagina di riferimento dei ruoli di base e predefiniti di IAM.
  2. Cerca l'autorizzazione che ti interessa. Vengono visualizzati i ruoli che dispongono dell'autorizzazione.

Esegui lo script

Lo script accetta i seguenti parametri:

  • PARENT_ID: ID del progetto principale. L'ID può essere per un'organizzazione o una cartella. Per tutti i progetti del progetto principale verrà attivata la funzionalità Stato del servizio personalizzato.
  • (Facoltativo) IAM_PRINCIPAL: un identificatore per l'entità o il membro a cui verrà concesso il ruolo Visualizzatore dell'integrità del servizio. In genere ha il seguente formato: PRINCIPAL_TYPE:ID. Esempio:user:my-user@example.com.

    Per l'elenco completo dei valori supportati, consulta la sezione Concedere un singolo ruolo della pagina Gestisci l'accesso a progetti, cartelle e organizzazioni.

Per eseguire lo script:

  1. Scegli API VERSION: v1 o v1beta.
  2. Incolla il seguente script in un file:

    #!/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. Esegui lo script. Gli esempi seguenti presuppongono che lo script sia in un file denominato activateProjects.sh:

    • Per attivare tutti i progetti nell'ID organizzazione 1111111111 e assegnare all'utenteuser:test-user@gmail.com il ruoloroles/servicehealth.viewer, esegui:

      bash activateProjects.sh 1111111111 "user:test-user@gmail.com"
      
    • Per attivare tutti i progetti nell'ID organizzazione 1111111111 e concedere all'account di servizio serviceAccount:test-proj1@example.domain.com il ruoloroles/servicehealth.viewer, esegui:

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

Personalized Service Health impiegherà fino a 24 ore per iniziare a elaborare gli eventi relativi allo stato del servizio.