如何获取GCP所有项目的负载均衡器及配置详情并导出
获取所有GCP项目的负载均衡完整配置并导出
核心解决方案(Bash脚本)
以下脚本会遍历你有权限访问的所有GCP项目,收集全局和区域负载均衡的完整转发规则配置(包含项目归属标识),最终导出为JSON格式文件:
#!/bin/bash # 定义输出文件路径 OUTPUT_FILE="all_gcp_lb_full_config.json" # 初始化JSON数组 echo "[" > "$OUTPUT_FILE" FIRST_ENTRY=true # 获取所有有权限的GCP项目ID PROJECT_LIST=$(gcloud projects list --format="value(projectId)") for PROJECT_ID in $PROJECT_LIST; do echo "Processing project: $PROJECT_ID" # 收集全局转发规则(对应HTTP/S等全局LB) GLOBAL_LBS=$(gcloud compute forwarding-rules list --global --project "$PROJECT_ID" --format=json) # 收集区域转发规则(对应TCP/UDP等区域LB) REGIONAL_LBS=$(gcloud compute forwarding-rules list --project "$PROJECT_ID" --format=json) # 合并两类规则并添加项目ID字段,确保JSON格式合法 COMBINED_LBS=$(echo "$GLOBAL_LBS $REGIONAL_LBS" | jq -s 'flatten | .[] | . + {"projectId": "'"$PROJECT_ID"'"}') # 处理JSON数组的逗号分隔 if [ "$FIRST_ENTRY" = true ]; then FIRST_ENTRY=false else echo "," >> "$OUTPUT_FILE" fi # 写入结果到输出文件 echo "$COMBINED_LBS" >> "$OUTPUT_FILE" done # 闭合JSON数组 echo "]" >> "$OUTPUT_FILE" echo "Export completed. Full config saved to $OUTPUT_FILE"
导出为CSV格式(可选)
如果需要CSV格式(包含关键完整字段),可以修改脚本中的COMBINED_LBS生成逻辑,并调整输出方式:
#!/bin/bash OUTPUT_FILE="all_gcp_lb_full_config.csv" # 写入CSV表头 echo '"projectId","name","IPAddress","region","isGlobal","target","protocols","portRange","loadBalancingScheme"' > "$OUTPUT_FILE" PROJECT_LIST=$(gcloud projects list --format="value(projectId)") for PROJECT_ID in $PROJECT_LIST; do echo "Processing project: $PROJECT_ID" GLOBAL_LBS=$(gcloud compute forwarding-rules list --global --project "$PROJECT_ID" --format=json) REGIONAL_LBS=$(gcloud compute forwarding-rules list --project "$PROJECT_ID" --format=json) # 提取指定字段并生成CSV行 echo "$GLOBAL_LBS $REGIONAL_LBS" | jq -r 'flatten | .[] | . + {"projectId": "'"$PROJECT_ID"'", "isGlobal": (.region == null)} | [.projectId, .name, .IPAddress, .region, .isGlobal, .target, .protocols, .portRange, .loadBalancingScheme] | @csv' >> "$OUTPUT_FILE" done echo "CSV export completed. File saved to $OUTPUT_FILE"
注意事项
- 权限要求:需确保你的GCP账号拥有
roles/resourcemanager.projectViewer(列出项目)和roles/compute.viewer(查看负载均衡资源)权限,或更高权限角色。 - 性能优化:若项目数量较多,建议后台运行脚本(如添加
nohup前缀),避免终端中断。 - 扩展完整配置:如果需要关联的后端服务、URL映射、SSL证书等更深层配置,可以在循环中额外调用
gcloud compute backend-services describe、gcloud compute url-maps describe等命令,将关联资源信息合并到输出结果中。
内容的提问来源于stack exchange,提问作者Jithu Joseph
相关产品推荐
相关产品推荐

