Activer Personalized Service Health pour tous les projets d'une organisation ou d'un dossier

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:

  1. 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.
  2. 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 :

  1. Définissez API VERSION sur v1 ou v1beta.
  2. 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
    
  3. 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ôle roles/servicehealth.viewer à l'utilisateur user: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 service serviceAccount:test-proj1@example.domain.com le rôle roles/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.