星期日, 5月 24, 2020

gcloud topic filters 小記

gcloud topic filters 小記

在使用 gcloud 指令的時候, 如果列出的輸出太多, 有時候就需要過濾出自己想要的資訊
但是在過濾的時候, 過濾的語法方式之前覺得不是很直觀
所以就紀錄一下, 以免自己忘記

大部分自已過濾的方式都是用關鍵字或是正規化表示式來過濾
所以要研究如何套用

要套用相關過濾方式, 要先參考 gcloud topic resource-keys

首先要觀察相關資訊, 這邊以 gcloud compute images list 為例

# gcloud  compute  images  list

NAME                                                  PROJECT            FAMILY                            DEPRECATED  STATUS
centos-6-v20200521                                    centos-cloud       centos-6                                      READY
centos-7-v20200521                                    centos-cloud       centos-7                                      READY
centos-8-v20200521                                    centos-cloud       centos-8                                      READY
coreos-alpha-2514-0-0-v20200520                       coreos-cloud       coreos-alpha                                  READY

預設會列出 standard images , 但是輸出的量比較多, 有將近 80 個 images
按照官方文件的方式, 先調整輸出的格式

# gcloud  compute  images  list  --format=flattened 

---
archiveSizeBytes:      20676277248
creationTimestamp:     2020-05-21T14:53:32.931-07:00
description:           CentOS, CentOS, 6, x86_64 built on 20200521
diskSizeGb:            20
family:                centos-6
id:                    856342087848380083
kind:                  compute#image
labelFingerprint:      42WmSpB8rSM=
licenseCodes[0]:       1000206
licenses[0]:           https://www.googleapis.com/compute/v1/projects/centos-cloud/global/licenses/centos-6
name:                  centos-6-v20200521
rawDisk.containerType: TAR
rawDisk.source:        
selfLink:              https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-6-v20200521
sourceType:            RAW
status:                READY
storageLocations[0]:   asia
storageLocations[1]:   eu

  • 這樣就可以很清楚的觀察相關資訊
    • 左邊是 key, 右邊是 value

所以我如果要列出 SLES 相關 images 該如何呢?

# gcloud  compute  images list  --filter  "name ~ sles"

NAME                       PROJECT         FAMILY           DEPRECATED  STATUS
sles-12-sp5-v20200227      suse-cloud      sles-12                      READY
sles-15-sp1-v20200415      suse-cloud      sles-15                      READY
sles-12-sp2-sap-v20191127  suse-sap-cloud  sles-12-sp2-sap              READY
sles-12-sp3-sap-v20191113  suse-sap-cloud  sles-12-sp3-sap              READY
sles-12-sp4-sap-v20191113  suse-sap-cloud  sles-12-sp4-sap              READY
sles-12-sp5-sap-v20200227  suse-sap-cloud  sles-12-sp5-sap              READY
sles-15-sap-v20191116      suse-sap-cloud  sles-15-sap                  READY
sles-15-sp1-sap-v20200415  suse-sap-cloud  sles-15-sp1-sap              READY

  • name 是key
  • ~ 代表後面要用正規表示式
  • sles 是要過濾的 value

另外也可以使用 --format 來決定要輸出的欄位, 如果只想列出 NAME, FAMILY, STATUS

# gcloud  compute  images  list  --filter  "name ~ sles"  --format  "table(NAME,FAMILY,STATUS)"

NAME                       FAMILY           STATUS
sles-12-sp5-v20200227      sles-12          READY
sles-15-sp1-v20200415      sles-15          READY
sles-12-sp2-sap-v20191127  sles-12-sp2-sap  READY
sles-12-sp3-sap-v20191113  sles-12-sp3-sap  READY
sles-12-sp4-sap-v20191113  sles-12-sp4-sap  READY
sles-12-sp5-sap-v20200227  sles-12-sp5-sap  READY
sles-15-sap-v20191116      sles-15-sap      READY
sles-15-sp1-sap-v20200415  sles-15-sp1-sap  READY

  • 這樣格式輸入的方式在 GCE 也很好用, 例如只要列出 GCE 名稱, 還有內部與外部 IP


寫了這一篇, 以後過濾 GCP 的訊息輸出就更方便了

~ enjoy it

Reference

沒有留言: