En este documento, se describe una secuencia de comandos que habilita cada proyecto de una organización o carpeta para el procesamiento de eventos de estado del servicio. Otorga al principal de Identity and Access Management (IAM) especificado el rol de Visualizador de Service Health, que te permite ver eventos y habilitar la API de Service Health.
Antes de comenzar
Asegúrate de contar con los siguientes permisos:
- Permiso para enumerar proyectos en la entidad superior:
resourcemanager.projects.list
. - Permiso para agregar IAM (rol de Visualizador de estado del servicio) para el principal de IAM especificado:
resourcemanager.projects.setIamPolicy
. - Permiso para habilitar los servicios de Google Cloud :
serviceusage.services.enable.
Para verificar los roles que puedes usar para ejecutar la secuencia, haz lo siguiente:
- Ve a la sección Roles predefinidos de la página de referencia de roles básicos y predefinidos de IAM.
- Busca el permiso deseado. Aparecerán los roles que tienen el permiso.
Ejecuta la secuencia de comandos:
La secuencia de comandos acepta los siguientes parámetros:
PARENT_ID
: Es el ID del proyecto superior. El ID puede ser de una organización o de una carpeta. Todos los proyectos del proyecto superior tendrán habilitada la función Servicio de salud personalizado.IAM_PRINCIPAL
(opcional): Es un identificador para el miembro o principal, al que se le otorgará el rol de visor de estado del servicio. Por lo general, tiene el siguiente formato:PRINCIPAL_TYPE:ID
. Ejemplo:user:my-user@example.com
.Para obtener la lista completa de los valores admitidos, consulta la sección Otorga un rol único en la página Administra el acceso a proyectos, carpetas y organizaciones.
Para ejecutar la secuencia de comandos, sigue estos pasos:
- Decide el API VERSION:
v1
ov1beta
. Pega la siguiente secuencia de comandos en un archivo:
#!/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
Ejecuta la secuencia de comandos. En los siguientes ejemplos, se supone que la secuencia de comandos está en un archivo llamado
activateProjects.sh
:Para activar todos los proyectos del ID de organización
1111111111
y otorgar al usuariouser:test-user@gmail.com
el rol deroles/servicehealth.viewer
, ejecuta lo siguiente:bash activateProjects.sh 1111111111 "user:test-user@gmail.com"
Para activar todos los proyectos en el ID de organización
1111111111
y otorgar a la cuenta de servicioserviceAccount:test-proj1@example.domain.com
el rol deroles/servicehealth.viewer
, ejecuta lo siguiente:bash activateProjects.sh 1111111111 "serviceAccount:test-proj1@example.domain.com"
Personalized Service Health tardará hasta 24 horas en comenzar a procesar los eventos de estado del servicio.