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

问题描述 投票:1回答:2

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

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

(没有区域或区域)我被提示选择区域或区域。对这样的脚本有任何帮助吗?

vbscript google-cloud-platform google-compute-engine gcloud
2个回答
0
投票

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

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

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

上面的命令首先使用grep来过滤一行信息,其中包含您要删除的实例组的详细信息,因此在应用awk之前,信息如下所示:

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

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

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

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


0
投票

您可以利用--format来概括脚本并避免切片和切片管道。特定于命令行的格式还可以证明您不会违反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或--show测试脚本。使用--verbosity = info运行任何list命令以查看默认输出格式。这就是 - 格式咒语的衍生方式。

© www.soinside.com 2019 - 2024. All rights reserved.