gcloud 命令显示分配给实例的 vCPU 和内存

gcloud command to display vCPU's and Memory assigned to Instances

如何使用 glcoud compute instances list 命令列出分配给实例的 vCPU 和内存。我能够构建以下命令,但它没有显示任何值。我知道机器类型具有映射所需的所有信息,我正在寻找显示 vCPU 和内存的命令

gcloud compute instances list --format="value(name,machineType,items[].scheduling.minNodeCpus,zone,disks[].type,disks[].diskSizeGb.list())"

TestVM  custom-4-32768-ext              us-central1-a   PERSISTENT      200
TestVM1 custom-4-32768-ext              us-central1-a   PERSISTENT      400

我在找类似

的东西
TestVM  custom-4-32768-ext     8  32GB    us-central1-a   PERSISTENT      200
TestVM1 custom-4-32768-ext     4  16GB    us-central1-a   PERSISTENT      200

有几个挑战:

  • instances describe 最适合实例名称 and zone
  • 需要
  • machine-types describe (!?) 才能获得 CPU|非自定义
  • 的 RAM
  • 自定义机器类型是自我描述的

Linux|Bash,基本信息如下:

# Get instance name,zone for `${PROJECT}
for PAIR in $(\
  gcloud compute instances list \
  --project=${PROJECT} \
  --format="csv[no-heading](name,zone.scope(zones))")
do
  # Parse result from above into instance and zone vars
  IFS=, read INSTANCE ZONE <<< ${PAIR}
  # Get the machine type value only
  MACHINE_TYPE=$(\
    gcloud compute instances describe ${INSTANCE} \
    --project=${PROJECT} \
    --zone=${ZONE} \
    --format="value(machineType.scope(machineTypes))")
  # If it's custom-${vCPUs}-${RAM} we've sufficient info
  if [[ ${MACHINE_TYPE}} == custom* ]]
  then
    IFS=- read CUSTOM CPU MEM <<< ${MACHINE_TYPE}
    printf "%s: vCPUs: %s; Mem: %s\n" ${INSTANCE} ${CPU} ${MEM}
  else
    # Otherwise, we need to call `machine-types describe`
    CPU_MEMORY=$(\
      gcloud compute machine-types describe ${MACHINE_TYPE} \
      --project=${PROJECT} \
      --zone=${ZONE} \
      --format="csv[no-heading](guestCpus,memoryMb)")
    IFS=, read CPU MEM <<< ${CPU_MEMORY}
    printf "%s: vCPUs: %s; Mem: %s\n" ${INSTANCE} ${CPU} ${MEM}
  fi
done

我会留给你根据需要与 instances describe 数据结合。

毫无疑问,还有另一种(可能更好)的方法可以做到这一点。