本頁提供的訣竅可能有助您使用 gcloud
指令列管理 Google Compute Engine 資源。如需 gcloud compute
標記與指令的完整清單,可以使用內建指令說明 (--help
)、已發布的參考說明文件或 gcloud core 說明文件。
事前準備
- 如要使用本指南中的指令列範例,請完成下列事項:
- 安裝或更新至最新版 gcloud 指令列工具。
- 設定預設地區和區域。
擷取資源相關資訊
您可以透過兩種方式擷取 Compute Engine 資源的相關資訊:使用 list
指令傳回資源清單及使用 describe
指令傳回特定資源的相關詳細資料。
使用 list
指令擷取資源
list
指令旨在針對所要求資源的最相關資料,傳回使用者可理解的表格。您可以選擇篩選您的結果以傳回內含更多相關結果但更短的清單。
- 篩選名稱的規則運算式
- 您可以使用 RE2 語法來比對資源名稱 (例如執行個體或磁碟名稱)。請參閱 gcloud compute 執行個體清單。
- 指令標記
--limit
要傳回的結果數上限。這個標記與使用 describe 指令擷取資源一節中所述的
--sort-by
標記搭配使用時,會顯得格外實用。--sort-by SORT_BY
用於排序的欄位 (如果適用)。要執行遞減順序排序,請在值前面加上波狀符號 (「~」)。
使用 describe
指令擷取資源
describe
指令是用於顯示一項資源的相關資訊。您必須在 describe
指令中提供資源的名稱。如果您不記得資源名稱,可以執行 list
指令來取得資源清單。舉例來說,以下兩個指令說明情境如下:列出映像檔以取得映像檔名稱及相關聯的專案。您可以將這些內容做為輸入資訊,提供給 describe
指令:
gcloud compute images list
NAME PROJECT FAMILY DEPRECATED STATUS ... centos-7-v20170620 centos-cloud centos-7 READY ... debian-9-stretch-v20170619 debian-cloud debian-9 READY ...
gcloud compute images describe debian-9-stretch-v20170619 --project debian-cloud
describe
指令的預設輸出內容為 YAML 格式,不過您可以透過 --format
標記,選擇 JSON、YAML 以及文字輸出格式。如果您要剖析輸出內容,JSON 輸出格式會十分實用。而文字輸出格式則會以每行列出一個屬性。
gcloud compute regions describe us-central1 --format json
{ "creationTimestamp": "2013-09-06T10:36:54.847-07:00", "description": "us-central1", "id": "6837843067389011605", "kind": "compute#region", "name": "us-central1", ... "status": "UP", "zones": [ "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a", "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b", "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f" ] }
範例
list
指令的範例
當您列出資源時,會獲得一目了然的摘要資料表。舉例來說,如要傳回您專案中執行個體的摘要資料,請使用 instances list
指令:
gcloud compute instances list
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS example-instance asia-east1-b n1-standard-1 10.240.95.199 107.167.182.44 RUNNING example-instance2 us-central1-a n1-standard-1 10.240.173.254 23.251.148.121 RUNNING test-instance us-central1-a n1-standard-1 10.240.118.207 23.251.153.172 RUNNING
藉由納入包含 key ~ value
運算子的 --filter
標記,您可以篩選 list
指令中的結果。例如,篩選執行個體清單以僅納入名稱中包含「test」的執行個體:
gcloud compute instances list --filter="name ~ .*test.*"
NAME ZONE MACHINE_TYPE INTERNAL_IP EXTERNAL_IP STATUS test-instance us-central1-a n1-standard-1 10.240.118.207 23.251.153.172 RUNNING
如要傳回 status
為 DONE
但不包含 httpStatus
為 200
的區域作業清單,請對 operations list
指令套用 zone
篩選器,然後 grep
結果:
gcloud compute operations list --filter="zone:(us-central1-a)" | grep DONE | grep 200
NAME HTTP_STATUS TYPE TARGET STATUS operation-1397752585735-4f73fa25b4b58-f0920fd5-254d709f 400 delete us-central1-a/disks/example-instance DONE operation-1398357613036-4f7cc80cb41e0-765bcba6-34bbd040 409 insert us-central1-a/instances/i-1 DONE operation-1398615481237-4f8088aefbe08-cc300dfa-2ce113cf 409 insert us-central1-a/instances/i-2 DONE
如要取得依名稱以遞減順序排序的 us-central1-a
的磁碟清單 (--sort-by ~NAME
),請使用 disks list
指令:
gcloud compute disks list --sort-by ~NAME --filter="zone:(us-central1-a)"
在某些情況下,您可能希望擁有連結資源的完整 URI,例如可將輸出內容從 list
指令傳到另一個指令或應用程式 (會取得資源連結清單) 的要求。如要顯示完整 URI 資源連結,請搭配 list
指令使用 --uri
標記。
gcloud compute instances list --uri --filter="name~'^example-.*'"
https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance1 https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance2
如要在指令中使用先前的 list
指令刪除執行個體,請使用:
gcloud compute instances delete $(gcloud compute instances list --uri --filter="name~'^example-.*'")
describe
指令的範例
如要只取得關於一個執行個體的詳細資料,請指定包括區域的執行個體。舉例來說,如要傳回「asia-east1-b」區域中名為「example-instance」執行個體的資訊,請使用 instances describe
指令:
gcloud compute instances describe example-instance --zone asia-east1-b
在預設情況下,這會傳回 YAML 輸出內容。如要將輸出內容變更為 JSON 或文字內容 (每行一個屬性),請使用 --format
標記。舉例來說,如要傳回相同執行個體的文字輸出,請使用:
gcloud compute instances describe example-instance --zone asia-east1-b --format text
--- canIpForward: False creationTimestamp: 2014-04-19T06:43:04.087-07:00 disks[0].autoDelete: False disks[0].boot: True disks[0].deviceName: example-instance ...
如要取得特定作業的詳細資料,請使用 operations list
指令找出該作業的完整 URI:
gcloud compute operations list --filter="zone:(us-central1-a)"
NAME TYPE TARGET HTTP_STATUS STATUS operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 delete us-central1-a/instances/example-instance 200 DONE operation-1406155180632-4fee4040a67c1-bf581ed8-ab5af2b8 delete us-central1-a/instances/example-instance-2 200 DONE ...
接著,請在 operations describe
指令中使用 URI:
gcloud compute operations describe \
operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 --zone us-central1-a
endTime: '2014-07-23T15:40:02.463-07:00' id: '31755455923038965' insertTime: '2014-07-23T15:39:25.910-07:00' kind: compute#operation name: operation-1406155165815-4fee4032850d9-7b78077c-a170c5c0 operationType: delete progress: 100 ...
以下指令會取得 JSON 格式 (--format json
) 的執行個體設定。
gcloud compute instances describe example-instance \
--zone us-central1-a
--format json
{ ... "name": "example-instance", "networkInterfaces": [ { "accessConfigs": [ { "kind": "compute#accessConfig", "name": "external-nat", "natIP": "107.167.187.66", "type": "ONE_TO_ONE_NAT" } ], "name": "nic0", "network": "https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default", "networkIP": "10.240.111.51" } ], ... "status": "RUNNING" ... }
查看授予給您的使用者身分
請使用下列指令來找出您被授予權限的帳戶:
gcloud auth list
撤銷更新憑證
如要撤銷帳戶 (在您使用 Cloud SDK 的電腦上) 憑證,請使用:
gcloud auth revoke
這會強制您使用 gcloud init
重新驗證。
此外,您也可以撤銷 Cloud SDK 存取資源的權限。假設您的更新憑證遭駭時,就可以這模做。如何撤銷 Cloud SDK 的權限:
- 在 Google 帳戶頁面登入您的帳戶。
- 在「帳戶權限」部分,按一下 [安全性],然後點選 [查看全部]。
- 選取 [Google Cloud SDK],然後點選 [撤銷存取權]。
重新啟動執行個體
如要在「us-central1-a」區域中重設名為「example-instance」的執行個體,請使用 instances reset
指令:
gcloud compute instances reset example-instance --zone us-central1-a
如需重設注意事項的相關資訊,請參閱重設執行個體說明文件。