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:
- Vai alla sezione Ruoli predefiniti della pagina di riferimento dei ruoli di base e predefiniti di IAM.
- 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:
- Scegli API VERSION:
v1
ov1beta
. 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
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 servizioserviceAccount: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.