gcloud compute

與使用 Compute Engine API 相較之下,gcloud compute 指令列工具能夠以更為平易近人的格式,輕鬆管理 Google Compute Engine 資源。

gcloud 工具是 Cloud SDK 的一部分,是一種整合式指令列工具,包含各種功能,例如陳述式自動完成、就地更新、豐富的手冊樣式說明、可供使用者理解和機器剖析的輸出格式,還有 Google Cloud SDK 整合能力等。

如果您從未使用過 Compute Engine,請從其中一個快速入門指南開始

安裝或更新 gcloud compute

設定 gcloud compute

Google Compute Engine 使用 OAuth2 來驗證和授權存取。請務必先授權給 Cloud SDK,讓 Cloud SDK 可代表您存取專案並取得驗證符記,方可使用 gcloud compute

若是第一次使用 gcloud 指令列工具,gcloud 會自動使用 default 設定。大部分情況下僅需要用到 default 設定。

  1. 執行 gcloud init 啟動驗證程序。系統出現提示時,按下 Enter 鍵。

    該指令會輸出一個網址,並嘗試開啟瀏覽器視窗要求存取您的專案。若可開啟瀏覽器視窗,即會看到以下輸出內容:

    gcloud init
    
    Welcome! This command will take you through the configuration of gcloud.
    
    Your current configuration has been set to: [default]
    
    ...
    
    To continue, you must login. Would you like to login (Y/n)?  y
    
    Your browser has been opened to visit:
    
    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.co%2
    Fauth%2Fappengine.admin+https%3A%2F%2...

    若 Cloud SDK 偵測到瀏覽器無法開啟 (例如您正使用遠端電腦工作),則會看見以下的輸出內容。或者如果您是使用本機電腦工作,但瀏覽器未自動載入網址,請使用 --console-only 標記來重新執行 gcloud init 指令。

    gcloud init --console-only
    

    請複製驗證網址並貼到瀏覽器上,然後再將驗證碼貼回至終端機。

    Go to the following link in your browser:
    
    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.co%2
    Fauth%2Fappengine.admin+https%3A%2F%2...
    
    Enter verification code:
  2. 授予存取權。

    請在瀏覽器視窗中查看應用程式權限,準備完畢後請按一下 [接受]。若您正在使用遠端電腦工作,或是已使用 --console-only 標記,則請複製指令列上傳回的代碼,並將其貼到「Enter verification code:」(輸入驗證碼:) 的後方。否則,此代碼會自動傳送至指令列工具。

  3. 選擇設定憑證。

    設定憑證後,gcloud 會提示此設定的預設專案。請從清單中選取專案 ID。

    設定此屬性後,您所有的 gcloud compute 指令皆會使用預設專案 ID,除非您將其覆寫為 --project 標記或設定 CLOUDSDK_CORE_PROJECT 環境變數。若未設定預設專案或環境變數,請務必在您執行的每個 gcloud compute 指令中加入 --project 標記。

若是初次執行 gcloud,系統也會根據專案中繼資料內的預設區域與地區金鑰,為您設定預設區域和地區。使用屬於某個區域或地區的資源時,必須具有區域或地區 (例如只要是在控管虛擬機器執行個體時,都必須指定區域)。設定好預設區域和地區後,gcloud 就可以推斷出此資訊,而無需請您在每個要求中提供此訊息。您隨時都可以手動覆寫或變更預設設定。

如需更多資訊,請參閱設定預設屬性

使用設定

gcloud 會運用 configurations 的概念,協助您管理不同帳戶的憑證。每項設定皆含有用來進行驗證的電子郵件帳戶,以及預設專案 ID、預設地區設定之類的特定設定。gcloud 會透過 default 設定自動安裝。此設定的憑證將用於驗證 Google Cloud Platform 服務。

大部分使用者僅需使用 default 設定即可。若您使用上需要切換不同帳戶,則可建立更多設定以便交替使用。

如需使用設定的詳細資訊,請參閱 gcloud topic configurations

設定預設屬性

目前而言,若您是初次建立專案及使用 gcloud,則 Compute Engine 會根據專案中繼資料內的資訊來挑選預設的區域和地區,據此設定 default 設定中的這項屬性。取得此專案中繼資料的資訊,即可檢視這些預設屬性:

gcloud compute project-info describe

請尋找下列中繼資料金鑰:

- key: google-compute-default-region
  value: ...
- key: google-compute-default-zone
  value: ..

若並未變更或覆寫這些屬性,gcloud 會將這些屬性自動提供給您發出的所有 gcloud 要求。若要變更或覆寫這些屬性,請使用以下方法。

於中繼資料伺服器變更預設區域和地區

您可向中繼資料伺服器發出要求,變更中繼資料伺服器內的預設的區域和地區。例如:

gcloud compute project-info add-metadata \
    --metadata google-compute-default-region=europe-west1,google-compute-default-zone=europe-west1-b

gcloud 指令列工具僅會偵測重新執行 gcloud init 指令後有所變更的新預設區域和地區。預設中繼資料更新完畢後,請執行 gcloud init 以重新初始化 default 設定。

於本機用戶端中設定預設區域和地區

您可在 gcloud 用戶端本機上設定這些屬性,以便手動選擇不同的區域或地區,而無需更新中繼資料伺服器。

首先請確定這是您要用在這些屬性上的設定。每項設定皆有專屬的設定;若要切換不同的設定,請執行:

gcloud config configurations activate CONFIGURATION_NAME

接下來,若要在用戶端中設定區域或地區屬性,請執行:

gcloud config set compute/zone ZONE
gcloud config set compute/region REGION

若要完全移除預設屬性,請使用 unset 指令。

gcloud config unset compute/zone
gcloud config unset compute/region

請注意,若您完全移除預設屬性,則在執行每項指令時 gcloud 皆會出現區域或地區提示。

設定環境變數中的預設值

您可以設定環境變數,由環境變數將值提供給 gcloud compute 指令。環境變數會覆寫您以 gcloud config 指令設定的預設屬性,但不會覆寫 --zone--region 等明確的標記。

Linux/macOS
請使用 export 指令設定區域與地區變數。
$ export CLOUDSDK_COMPUTE_ZONE=ZONE
$ export CLOUDSDK_COMPUTE_REGION=REGION
若要將這些環境變數設為無法變更,請在 ~/.bashrc 檔案中加入這些指令,然後重新啟動終端機。
Windows
使用 set 指令設定區域與地區變數。
C:\> set CLOUDSDK_COMPUTE_ZONE=ZONE
C:\> set CLOUDSDK_COMPUTE_REGION=REGION

您可在指令加入特定的 --zone--region 標記,用以覆寫環境變數。

設定每項要求的值

您可在每項指令中加入特定的 --zone--region 標記,藉此覆寫預設屬性。例如:

gcloud compute instances create example-instance --zone us-central1-f

這些標記只對您搭配使用的單項指令有效。標記不會變更您任何的預設設定,只會覆寫該向要求的設定。

預設屬性的優先順序

gcloud 指令列工具會按以下順序,評估每項設定的預設屬性:

  • 若有提供明確的 --zone--region--project 標記,其會覆寫該單項要求的其他所有設定。
  • 在中繼資料伺服器中定義預設區域與地區屬性,則在您執行 gcloud init 時,gcloud 指令列工具會將本機 gcloud 用戶端設為這些屬性。至於後續要求,工具會發出提示,要求提供區域。
  • 若在中繼資料伺服器與本機用戶端兩邊都有定義預設區域與地區屬性,工具會使用本機用戶端上的預設設定。
  • 若在中繼資料伺服器、本機用戶端和環境變數中都有定義預設區域與地區屬性,則無論使用的是哪種設定,工具皆會使用環境變數中的預設屬性。

常見的 gcloud compute 指令

以下是使用執行個體時的常見工作範例。如需更多執行個體一般使用上的詳細資料,請參閱執行個體

建立執行個體

使用 instances create 指令可建立新的執行個體。舉例來說,下列指令會在「us-central1-a」區域中,建立名為「my-instance」的執行個體。

gcloud compute instances create my-instance

若省略 --zone 標記,gcloud 會根據您的預設屬性來推斷需要的區域。

若未在建立指令中指定其他必要的執行個體設定,則系統會將機器類型映像檔等設定設為預設值。顯示 create command 的說明,即可查看預設值:

gcloud compute instances create --help

列出執行個體

有數種方式可以使用 instances list 指令列出執行個體。您可使用下列指令,建立使用者可理解的表格式輸出結果:

gcloud compute instances list

可使用規則運算式,依據名稱縮小傳回的執行個體清單範圍。例如以下指令會傳回名稱為「my-」開頭的所有執行個體。

gcloud compute instances list --filter="name ~ ^my-.*"

如要進一步瞭解如何列出及篩選資源,請參閱擷取資源一文。

如要傳回單一執行個體的詳細資料,請使用 instances describe 指令。例如以下指令會傳回「my-instance」的相關資訊。

gcloud compute instances describe my-instance --zone us-central1-a

先前的指令會以 YAML 格式傳回結果。您可使用 --format 標記變更結果的顯示方式。如需更多取得與列出資源 (包括執行個體) 的範例,請參閱擷取資源

連線至執行個體

gcloud compute 可讓您輕鬆連線至執行個體。gcloud compute sshgcloud compute scp 指令提供了關 SSH 和 SCP 的包裝函式,其會負責執行驗證,並將執行個體名稱對應至 IP 位址。

例如,若要以 SSH 連至「us-central1-a」區域中的「my-instance」,則可使用:

gcloud compute ssh my-instance --zone us-central1-a

若要將本機檔案「file-1」複製至「us-central1-a」區域中的「my-instance」,則可使用:

gcloud compute scp ~/file-1 my-instance:~/remote-destination --zone us-central1-a

也可以使用 scp 指令,將檔案從執行個體複製至您的本機電腦。例如,若要建立位於「us-central1-a」區域中「my-instance」執行個體的「file-1」本機複本,可使用:

gcloud compute scp my-instance:~/file-1 ~/local-destination --zone us-central1-a

根據預設,gcloud compute sshgcloud compute scp 指令皆會使用位於「~/.ssh/google_compute_engine」的私人金鑰檔案。若不想使用此金鑰檔案,則可使用 --ssh-key-file 標記指定不同的位置,如此便能指定不同的金鑰檔案。舉例來說,您可能已有想要使用的私人金鑰,或是想要使用不同專案的其他私人金鑰。

直接使用 SSH 型程式

若您偏好直接使用 sshscpgcloud compute 可產生 SSH 設定檔,內有執行個體的主機別名與驗證設定。若要如此,請執行:

gcloud compute config-ssh

以下是新增到 SSH 設定檔 (~/.ssh/config) 的別名範例:

Host my-instance.us-central1-a.myproject
HostName 107.178.220.224
IdentityFile ~/.ssh/google_compute_engine
UserKnownHostsFile=/dev/null
CheckHostIP=no
StrictHostKeyChecking=no

您可使用 --ssh-config-file 標記,為每位使用者指定備用的 SSH 設定檔。

每當您新增或移除執行個體時,皆會傳回 config-ssh 指令。

使用 config-ssh 指令更新 SSH 設定檔後,即可使用任何 SSH 型的基礎的程式來存取執行個體。例如對於「myproject」專案中位於「us-central1-a」區域內,名為「my-instance」的執行個體,您可使用 OpenSSH SSH 用戶端,如下:

$ ssh my-instance.us-central1-a.myproject

如要在執行個體上建立檔案「file-1」的本機複本,可使用 scp 用戶端,如下所示:

$ scp my-instance.us-central1-a.myproject:~/file-1 .

使用中繼資料

在伺服器定義的中繼資料之外,您可為執行個體或專案設定自訂的中繼資料。當您要將可在執行個體上透過程式碼查詢的任意值傳入專案或執行個體時,這項功能就非常實用。本節會說明一些常見的中繼資料作業。如要進一步瞭解如何使用中繼資料,請參閱儲存和擷取中繼資料

新增和移除執行個體中繼資料

如要設定執行個體中繼資料,可在使用 create 指令建立執行個體時使用 gcloud compute,或是使用 add-metadataremove-metadata 指令來設定現有的執行個體。系統會使用 --metadata 標記,將中繼資料指定為以等號 ("=") 區隔的鍵/值組合。或是也可以使用 --metadata-from-file 標記,從本機檔案讀取中繼資料。

例如,若要在「us-central1-a」區域中,將自訂中繼資料金鑰「role」、「unique-id」和「build-num」新增至名為「my-instance」的現有執行個體,則可使用:

gcloud compute instances add-metadata my-instance \
    --zone us-central1-a \
    --metadata role=worker unique-id=1234 build-num=4.32

若要移除自訂中繼資料金鑰「role」和「unique-id」,則可使用:

gcloud compute instances remove-metadata my-instance \
    --zone us-central1-a \
    --keys role unique-id

從現有執行個體新增和移除中繼資料後,可執行下列指令來查看變更:

gcloud compute instances describe my-instance --zone us-central1-a
...
metadata:
  fingerprint: eU448B6JGQw=
  items:
  - key: build-num
    value: '4.32'
  kind: compute#metadata
...

若要變更現有的中繼資料或新增中繼資料,請使用 add-metadata 指令。執行個體中繼資料更新有累加的特性。這表示僅能指定想要新增或變更的中繼資料金鑰。若您指定現有的金鑰,則會將該金鑰的值更新為新值。

至於已安裝 Google Compute Engine 工具的映像檔,系統會保留兩種中繼資料金鑰,以供啟動指令碼編寫功能使用:

  • startup-script:代表執行個體啟動時執行的指令碼內容。若指令碼內容較長,則可使用 --metadata-from-file 標記將路徑傳入到內含指令碼內容的檔案。
  • startup-script-url:代表執行個體啟動時所執行的指令碼 (位於指定的公開存取位置)。

例如,若要以使用 --metadata 標記指定的啟動指令碼內容,在「us-central1-a」區域中建立名為「my-instance」的執行個體,則可使用:

gcloud compute instances create my-instance --zone us-central1-a \
    --metadata startup-script="echo 'hello world'"

若以 SSH 連至「my-instance」並檢查系統記錄 (/var/log/syslog),即會看見啟動指令碼的結果。

您可透過名為「my-instance」的現有執行個體,使用 --metadata-from-file 標記從本機檔案新增下列啟動指令碼:

gcloud compute instances add-metadata my-instance \
    --metadata-from-file startup-script=/local/path/to/script/startup

在本範例中,當執行個體重新啟動時,會執行啟動指令碼 (例如在使用 gcloud compute instances reset 時)。

新增與移除專案層級的中繼資料

專案中的所有執行個體皆可存取專案層級的中繼資料。根據預設,專案已將專案的層級中繼資料保留下來。您也可以新增和移除自訂專案層級的中繼資料。與執行個體中繼資料相同,專案中繼資料更新也具有累加的特性。這表示僅能指定想要新增或變更的中繼資料金鑰。若您指定現有的金鑰,則會將該金鑰的值更新為新值。

若要查看現有的專案層級中繼資料,請使用 project-info describe 指令:

gcloud compute project-info describe

下列指令會新增兩筆整個專案通用的中繼資料。

gcloud compute project-info add-metadata \
    --metadata-from-file startup-script=/local/path/to/script
    --metadata startup-id=1234

請注意,系統會保留 startup-script 金鑰,這代表在執行個體啟動時,會執行指定的本機檔案內容。

若要移除您新增的兩筆中繼資料,請使用:

gcloud compute project-info remove-metadata --keys startup-script startup-id

刪除執行個體

如要在「us-central1-a」區域中刪除名為「my-instance」的執行個體,可使用 instances delete 指令:

gcloud compute instances delete my-instance --zone us-central1-a

建立執行個體時,亦會建立永久磁碟。此磁碟會計入永久磁碟配額,並每月持續產生磁碟費用。根據預設,instances delete 指令會刪除執行個體,並移除與執行個體有關聯的永久磁碟。若要覆寫此行為,您可以:

  • 使用 instances delete 指令的 --keep-disks 標記。
  • 將磁碟設為不要自動刪除。建立執行個體之後,在刪除執行個體前,隨時都可使用 instances set-disk-auto-delete 指令來保留永久磁碟。請注意,無論自動刪除設定為何,instances delete 指令的 --delete-disks 標記皆會刪除磁碟。

詳情請參閱設定永久磁碟的自動刪除狀態一文。

列出作業

作業是 Google Compute Engine 資源的變更記錄。如要取得專案中所有作業的清單,可使用 operations list 指令:

gcloud compute operations list

作業具有範圍,可用於縮小清單要求所傳回的作業量。例如可使用 --global--zones--regions 標記來修正結果。下列指令僅會傳回位於「us-central1-a」和「us-central1-b」區域的結果:

gcloud compute operations list --filter="zone:(us-central1-a us-central1-b)"

如需更多取得和列出資源 (包含作業) 的範例,請參閱擷取資源一文。

取得說明頁面

下列指令示範了各種不同的說明類型存取方式,包括 gcloud compute 指令的一般說明,乃至資源群組 (instances) 或指令 (create) 的特定說明。所有資源與指令的完整說明皆會按照以下模式:

gcloud compute --help
gcloud compute instances --help
gcloud compute instances create --help

您可使用 -h 標記替代 --help 標記來取得快速說明。也可以查看 Cloud SDK 參考資料中所有的詳盡說明。

如需設定 gcloud 工具的特定指令的詳盡說明,請執行:

gcloud topic TOPIC

其中,TOPIC 是您想要取得說明的適用主題。如需您可取得說明的主題清單,請參閱 gcloud topic 參考資料說明文件。

後續步驟

就是這麼簡單,您現在可以自行使用 gcloud compute 工具開始進行,以下建議可幫助您快速上手:

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件