Ce document décrit un script qui permet à chaque projet d'une organisation ou d'un dossier de traiter les événements d'état des services. Il accorde au principal Identity and Access Management (IAM) spécifié le rôle Lecteur de l'état des services, qui vous permet d'afficher les événements et d'activer l'API Service Health.
Avant de commencer
Make sure that billing is enabled for your Google Cloud project.
Assurez-vous de disposer des autorisations suivantes pour exécuter le script :
- Autorisation de lister les projets sous le parent :
resourcemanager.projects.list
. - Autorisation d'ajouter IAM (rôle Lecteur de l'état du service) pour le principal IAM spécifié :
resourcemanager.projects.setIamPolicy
. - Autorisation d'activer les services Google Cloud :
serviceusage.services.enable
.
Pour obtenir ces autorisations, vous pouvez demander à un administrateur de vous attribuer un rôle approprié. Recherchez les autorisations dans 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. Les rôles disposant des autorisations s'affichent.
Exécuter le script
Le script accepte les paramètres suivants :
PARENT_ID
: ID du parent des projets. Il peut s'agir de l'ID d'une organisation ou d'un dossier. Le service d'état personnalisé sera activé pour tous les projets du parent.(facultatif)
IAM_PRINCIPAL
: identifiant du compte principal ou du membre auquel le rôle Lecteur de l'état des services sera attribué. 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 :
- Choisissez le API VERSION :
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
345678901
et accorder à l'utilisateuruser:test-user@gmail.com
le rôleroles/servicehealth.viewer
, exécutez la commande suivante :bash activateProjects.sh 345678901 "user:test-user@gmail.com"
Pour activer tous les projets dans l'ID d'organisation
345678901
et accorder au compte de serviceserviceAccount:test-proj1@example.domain.com
le rôleroles/servicehealth.viewer
, exécutez la commande suivante :bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
Il faut jusqu'à 24 heures pour que Personalized Service Health commence à traiter les événements liés à l'état des services.