gcloud compute

使用 gcloud compute 指令列工具,就能夠以比 Compute Engine API 更為平易近人的形式,輕鬆管理 Compute Engine 資源。

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

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

安裝或更新 gcloud compute

  • 如要安裝最新版的 gcloud compute,請安裝 Cloud SDK

  • 如要更新至最新版的 gcloud compute,請參閱 gcloud 元件更新一文。

設定 gcloud compute

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

如果是第一次使用 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. 授予存取權。

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

  3. 選擇設定憑證。

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

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

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

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

使用設定

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

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

如需使用設定的詳細資訊,請參閱 gcloud topic configurations 相關說明。

設定預設屬性

中繼資料伺服器包含與專案有關的中繼資料資訊,包括專案 ID、專案名稱等等。您可以查詢中繼資料伺服器以取得及使用有關專案的資訊。

如果您為專案指定預設地區和區域,Compute Engine 會在專案的中繼資料伺服器中設定這些值。

您可以使用下列值來設定預設地區和區域:

  • google-compute-default-zone
  • google-compute-default-region

如要查看預設的地區和區域設定,請執行以下 gcloud 指令:

gcloud compute project-info describe --project [PROJECT_ID]

其中,[PROJECT_ID] 是您的專案 ID。

請在回應中找出以下中繼資料鍵/值:

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

如果回應中沒有 google-compute-default-regiongoogle-compute-default-zone 鍵與其值,則表示之前未設定預設的地區或區域。

  • 如果未設定預設值,則 gcloud 會在每次要求時提示您輸入區域和地區。
  • 如果已設定預設值,則除非您手動覆寫該預設設定,否則 gcloud 會自動將預設值用於您所有的 gcloud 要求。

如要變更或覆寫預設屬性,請使用以下方法。

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

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

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

只有在您重新執行 gcloud init 指令後,gcloud 指令列工具才能選擇已變更的新預設地區和區域。預設中繼資料更新完畢後,請執行 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 指令中指定像是機器類型映像檔等其他必要的執行個體設定,那麼系統會將這些都設為預設值。顯示 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 指令提供了安全殼層和 SCP 的包裝函式,負責執行驗證,並將執行個體名稱對應到 IP 位址。

例如,要以安全殼層連至「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 旗標指定不同的位置,如此便能指定不同的金鑰檔案。舉例來說,您可能已有想要使用的私人金鑰,或是想要使用不同專案的其他私人金鑰。

直接使用安全殼層型程式

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

gcloud compute config-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 旗標,為每位使用者指定備用的安全殼層設定檔。

每次新增或移除執行個體時,您都應重新執行 config-ssh 指令。

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

$ 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 指令。執行個體中繼資料更新有累加的特性。這表示僅能指定想要新增或變更的中繼資料鍵。如您指定現有的鍵,則會更新該鍵的值。

至於已安裝 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'"

若以安全殼層連至「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 旗標皆會刪除磁碟。

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

列出作業

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

gcloud compute operations list

作業具有範圍,可用於縮小清單要求所傳回的作業量。例如可使用 --global--zones--regions 旗標來修正結果。下列指令僅會傳回位於 us-central1-aus-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 說明文件