2020年6月2日 星期二

從MAC使用gcloud SDK傳輸檔案到GCP

為了建立在PC、MAC上都可以連到GCP測試站的開發環境;但若用GCP console的檔案傳輸需要透過Bucket或單個檔案上傳,實在有點麻煩。
所以就試著用gcloud SDK以終端機command line的方式來上傳檔案 。


安裝GCP套件需要安裝Python
-MAC中預設的是python2.7,而GCP套件目前可支援Python2.7,但未來會只支援Python3以上版本,所以就來研究一下怎麼安裝Python3囉。


開啟終端機進行Python3安裝
1) 要先安裝Brew,輸入以下指令
-ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2) 安裝Python3,輸入以下指令
-brew install python3


安裝GCP的套件
- 下載的檔案解壓縮後,放到想要的目錄中
- 在終端機中輸入 [目錄名稱]/google-cloud-sdk/install.sh
- 會問題要不要回報問題給GCP及重新設定路徑,可以選擇不輸入就略過
- 最後重新開啟終端機


安裝GCP SDK,在終端機中輸入以下指令
gcloud init
- 會開始在本機建立一個預設設定檔(default configuration)
- 接著會要求你登入Google帳號
- 會詢問要選擇哪個在GCP建立的專案,或新建專案
- 詢問要不要變更區域資料
- 設定後就安裝完成了

設定GCP專案中繼資料的區域資訊

設定專案中的中繼資料,需要設region=[選擇的區域]及-zone=[選擇的區域]

gcloud compute project-info add-metadata --metadata google-compute-default-region=asia-east1,google-compute-default-zone=asia-east1-b


設定Client預設設定檔中的區域資訊
再來要設定Client端社區域資訊,這樣使用指令時才不用每次都要輸入

gcloud config set compute/zone asia-east1-b

gcloud config set compute/region asia-east1


連線GCP VM,在終端機輸入以下指令
gcloud compute ssh [Instance_name]
- 輸入passphrase後,就會產生SSH public key跟Private Key並存在電腦中
- 之後就可以從終端機輸入gcloud compute ssh [Instance_name] 連線到GCP的VM了

設定SSH 中繼資料
- 產生後的SSH Key會存在 預設路徑user/[使用者名稱]/.ssh/
- 目錄中會有兩個檔案*.pub是public key, 另一個沒有副檔名的是private key 
- 將public key用文字檔打開並複製
- 進入GCP console compute engine > 中繼資料 > 安全殼層金鑰
- 新增,然後將複製的public Key貼上後儲存 
- 這樣用完成SSH的設定了
- 這個Key就會是root帳號的Key,以下傳輸檔案時就可以帶root作為帳號來進行操作


傳輸檔案
先確認目前終端機是在本地不是連到VM上 (輸入指令回傳找不到目錄好幾次,才發現原來已經SSH連到VM了.. Orz)

整個目錄上傳指令: gcloud compute scp --recurse [本地目錄] [帳號]@[VM_名稱]:[VM目錄]
- 在輸入兩次passphrase,就會開始上傳了。
* 在前面的SSH Key設定中沒有帳號,這個步驟可以帶root;回到GCP console中的中繼資料中看,會多一個root的金鑰

- 單一檔案上傳指令: gcloud compute scp [本地目錄] [帳號]@[VM_名稱]:[VM目錄]


GCP連線相關問題

ERROR: (gcloud.compute.scp) Could not fetch resource:

 - Insufficient Permission: Request had insufficient authentication scopes.

需要重新驗證身份
指令-sudo gcloud auth login
輸入後再重新登入Google 帳號就可以了

ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255]

專案可能有instance或區域重新設定:需要更新SSH 金鑰
指令-sudo gcloud compute config-ssh
出現這問題時,不一定靠更新SSH可以排除... 還需研究






沒有留言:

張貼留言