Ce document décrit un script qui permet à chaque projet d'une organisation ou d'un dossier de traiter les événements d'état du service. Il attribue au compte principal IAM (Identity and Access Management) spécifié le rôle de lecteur de l'état du service, qui vous permet d'afficher les événements et d'activer l'API Service Health.
Avant de commencer
Assurez-vous que vous disposez des autorisations suivantes :
- Autorisation de répertorier les projets sous le parent :
resourcemanager.projects.list
. - Autorisation d'ajouter IAM (rôle de lecteur de l'état du service) pour l'entité principale IAM spécifiée:
resourcemanager.projects.setIamPolicy
. - Autorisation d'activer les services Google Cloud :
serviceusage.services.enable.
Pour vérifier les rôles que vous pouvez utiliser pour exécuter le script:
- Accédez à la section Rôles prédéfinis de la page de référence sur les rôles IAM de base et prédéfinis.
- Recherchez l'autorisation souhaitée. Les rôles disposant de l'autorisation s'affichent.
Exécuter le script
Le script accepte les paramètres suivants:
PARENT_ID
: ID du parent des projets. L'ID peut correspondre à une organisation ou à un dossier. La santé personnalisée des services sera activée pour tous les projets du parent.(facultatif)
IAM_PRINCIPAL
: identifiant du principal ou du membre auquel sera attribué le rôle "Visionneuse de l'état du service". Il se présente généralement sous la forme suivante:PRINCIPAL_TYPE:ID
. Exemple:user:my-user@example.com
.Pour obtenir la liste complète des valeurs acceptées, consultez la section Attribuer un rôle unique de la page "Gérer l'accès aux projets, aux dossiers et aux organisations".
Pour exécuter le script, procédez comme suit :
- Définissez API VERSION sur
v1
ouv1beta
. Collez le script suivant dans un fichier:
#!/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
Exécutez le script. Les exemples suivants supposent que le script se trouve dans un fichier nommé
activateProjects.sh
:Pour activer tous les projets de l'ID d'organisation
1111111111
et attribuer le rôleroles/servicehealth.viewer
à l'utilisateuruser:test-user@gmail.com
, exécutez la commande suivante:bash activateProjects.sh 1111111111 "user:test-user@gmail.com"
Pour activer tous les projets de l'ID d'organisation
1111111111
et accorder au compte de serviceserviceAccount:test-proj1@example.domain.com
le rôleroles/servicehealth.viewer
, exécutez la commande suivante:bash activateProjects.sh 1111111111 "serviceAccount:test-proj1@example.domain.com"
Personalized Service Health peut mettre jusqu'à 24 heures à commencer à traiter les événements de santé des services.