Mengaktifkan Personalized Service Health untuk semua project di organisasi atau folder

Dokumen ini menjelaskan skrip yang mengaktifkan setiap project di organisasi atau folder untuk pemrosesan peristiwa kesehatan layanan. Tindakan ini akan memberikan peran Service Health Viewer yang ditentukan oleh prinsipal Identity and Access Management (IAM), yang memungkinkan Anda melihat peristiwa dan mengaktifkan Service Health API.

Sebelum memulai

Make sure that billing is enabled for your Google Cloud project.

Pastikan Anda memiliki izin berikut untuk menjalankan skrip:

  • Izin untuk mencantumkan project di bagian induk: resourcemanager.projects.list.
  • Izin untuk menambahkan IAM (peran Service Health Viewer) untuk akun utama IAM yang ditentukan: resourcemanager.projects.setIamPolicy.
  • Izin untuk mengaktifkan Google Cloud layanan: serviceusage.services.enable.

Salah satu cara untuk mendapatkan izin ini adalah dengan meminta administrator untuk memberi Anda peran yang sesuai. Telusuri izin di bagian Peran bawaan di halaman referensi peran dasar dan bawaan IAM. Peran yang memiliki izin akan muncul.

Jalankan skrip:

Skrip ini menerima parameter berikut:

  • PARENT_ID: ID induk ke project. ID dapat berupa ID organisasi atau folder. Semua project dalam induk akan mengaktifkan Kesehatan Layanan yang Dipersonalisasi.
  • (opsional) IAM_PRINCIPAL: ID untuk akun utama, atau anggota, yang akan diberi peran Service Health Viewer. ID ini biasanya memiliki bentuk berikut: PRINCIPAL_TYPE:ID. Contoh:user:my-user@example.com.

    Untuk mengetahui daftar lengkap nilai yang didukung, lihat bagian Memberikan satu peran di halaman Mengelola akses ke project, folder, dan organisasi.

Untuk menjalankan skrip:

  1. Tentukan API VERSION: v1 atau v1beta.
  2. Tempel skrip berikut ke 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
    
  3. Jalankan skrip. Contoh berikut mengasumsikan bahwa skrip berada dalam file bernama activateProjects.sh:

    • Untuk mengaktifkan semua project di ID organisasi 345678901 dan memberikan peranroles/servicehealth.viewer kepada penggunauser:test-user@gmail.com, jalankan:

      bash activateProjects.sh 345678901 "user:test-user@gmail.com"
      
    • Untuk mengaktifkan semua project di ID organisasi 345678901 dan memberikan peran roles/servicehealth.viewer kepada akun layanan serviceAccount:test-proj1@example.domain.com, jalankan:

      bash activateProjects.sh 345678901 "serviceAccount:test-proj1@example.domain.com"
      

Personalized Service Health akan memerlukan waktu hingga 24 jam untuk mulai memproses peristiwa status layanan.