如何从Google云中删除所有区域的实例组



我需要创建一个从Google Cloud Platform中删除实例组的脚本。该组可以在任何区域。当我运行命令时:

gcloud compute instance-groups managed delete [instance-group-name]

(无区域或区域(我被提示选择一个区域或区域。这样的脚本有任何帮助吗?

放置 - Zone标志并将其指定在命令中,显然会阻止该区域的提示。但是,如果每个实例组的区域不同,并且您想自动化此过程,则可以在列出您的实例组的脚本中添加一些命令(输出将包括该区域(,然后过滤输出以创建一个变量其中包含区域信息。然后可以在您的gcloud compute instance-groups managed delete命令中使用此变量。

例如,要隔离要删除实例组的区域,您可以尝试这样的尝试。

gcloud compute instance-groups list | grep INSTANCE_GROUP_NAME | awk '{print $2;}'

上面的命令首先使用GREP来过滤一条信息线,其中包含要删除的实例组的详细信息,因此在应用尴尬之前,信息如下:

test-instance-group                             us-west1-c  zone   default  Yes      1

awk '{print $2;}'过滤器打印出第二个非Whitespace子字符串,这将是区域,因此输出以下内容:

us-west1-c

因此,就脚本而言,在执行命令以删除实例组之前,您需要为该实例组区域设置变量。总而言之,这是您的脚本外观:

#!/bin/bash
### retrieve the zone information of the instance group and store it in a variable.
zonevar="$(gcloud compute instance-groups list | grep INSTANCE_GROUP_NAME  | awk '{print $2;}')"
### use the variable in the gcloud command to delete the instance group.
gcloud compute instance-groups managed delete INSTANCE_GROUP_NAME --zone=$zonevar

如果您想应用区域信息而不是区域信息,则可以应用相同的逻辑。

您可以利用 - 格式概括脚本并避免切片& amp; dice管道。特定于Commmand Line的格式还可以证明您与不属于CLI合同的一部分的表格格式更改。该脚本还处理区域/区域位置。

#!/bin/bash
typeset -A locationsof
function getlocations {
  set -- $(gcloud compute instance-groups list 
           --format="value(name,location(),location_scope())")
  while (( $# >= 3 ))
  do
    locationsof[$1]+=" --$3=$2"
    shift 3
  done
}
getlocations
for name
do
  if [[ $name == -n || $name == --show ]]; then
    show=echo
    continue
  fi
  locations=${locationsof[$name]}
  if [[ ! $locations ]]; then
    echo "$name: unknown instance group" >&2
    continue
  fi
  for location in $locations
  do
    $show gcloud compute instance-groups managed delete $name $location
  done
done

-n 测试脚本 - 在真正删除任何内容之前,请显示。使用 - verbosity = info 运行任何列表命令,以查看默认输出格式。这就是的方式 - 格式咒语。

相关内容

  • 没有找到相关文章

最新更新