如何使用gcloud过滤器?删除子网时过滤规则失效问题咨询
gcloud子网删除命令无法使用filter过滤区域的解决方案
首先明确:gcloud compute networks subnets delete命令不支持通过--filter参数直接筛选要删除的资源,这和list命令的--filter作用逻辑完全不同。
list命令的--filter是在服务端筛选返回的子网列表,用来缩小查询范围;- 而
delete命令的设计是要求明确指定要删除的子网资源(名称+区域),它的--filter参数没有筛选待删除资源的功能,所以直接使用会失败。
如果不想手动遍历,可以通过list命令配合shell循环或xargs来实现批量删除:
方法1:使用shell循环
gcloud compute networks subnets list --network=MYNW --filter="region:(us-west1 us-west2)" --format="value(name,region)" | while read subnet region; do gcloud compute networks subnets delete $subnet --region=$region -q done
-q参数用来跳过确认提示,直接执行删除。
方法2:使用xargs
gcloud compute networks subnets list --network=MYNW --filter="region:(us-west1 us-west2)" --format="value(selfLink)" | xargs gcloud compute networks subnets delete -q
通过selfLink可以直接唯一标识子网资源,不需要额外指定区域。
内容的提问来源于stack exchange,提问作者souser
相关产品推荐
相关产品推荐

