gcloud实例组命令引用变量报错:Non-empty key name expected 求助
问题分析与解决办法
错误原因
你第二条命令的核心问题在于:
- 错误地将实例名作为
instance-groups describe的字段参数,但instance-groups describe仅返回实例组本身的属性(如名称、区域、实例列表等),并不包含以实例名为键的字段。 - 若实例组为空,
$var的值为空,导致format参数变成csv[no-heading](name,),逗号后无有效字段名,触发报错;即使实例组有实例,$var会包含换行/空格分隔的实例名,展开后会破坏format的合法格式,同样引发错误。
针对不同需求的解决办法
需求1:获取实例组名称 + 组内所有实例名
无需拆分命令,直接通过instance-groups describe提取所需信息:
gcloud compute instance-groups describe ig --region=europe-west1 --format="csv[no-heading](name, instances[].basename())"
- 说明:
instances[].basename()会从实例的selfLink中提取出实例名称,输出格式为实例组名,实例1,实例2,...
需求2:获取实例组名称 + 每个实例的详细属性(如状态、IP等)
需要先获取实例列表及对应可用区,再逐个查询实例信息并关联实例组名:
# 定义实例组名称和区域 IG_NAME="ig" REGION="europe-west1" # 获取实例组内的实例名与对应可用区 INSTANCES=$(gcloud compute instance-groups list-instances $IG_NAME --region=$REGION --format="value(NAME,ZONE)") # 循环输出实例组名+实例详细信息 while read -r instance zone; do gcloud compute instances describe $instance --zone=$zone --format="csv[no-heading]('$IG_NAME', NAME, STATUS, INTERNAL_IP, EXTERNAL_IP)" done <<< "$INSTANCES"
- 说明:可根据需求调整
instances describe的format字段,比如添加DISK_SIZES等属性。
内容的提问来源于stack exchange,提问作者eledu
相关产品推荐
相关产品推荐

