GCP 系列- GCE 的 --metadata-from-file startup-script 沒有被執行

Startup script doesn’t seem to work on GCE (Google Compute Engine).

在 GCP 中的 GCE 建立 VM 時常會有要順便安裝或設置的套件與服務的需求,並將其打包成一個 startup script 送過去,但是時常會發生機器啟動後卻沒有順利地被安裝。最直接的原因就是 script 出錯或是根本沒被執行,本文將提供快速簡單的方法查證自己的 script 到底在哪裡出錯了。

在本範例你會學到:

  • 快速排除不明的 startup script 執行失敗

在本範例你需要先準備好:

  • 有 GCP 的帳號
  • 有使用 GCE 的經驗/需求

1.簡易的使用 GCE 指令

在這裡稍微複習一下如何使用指令啟動 GCE 的 VM 指令:

  • --project: 專案名稱(GCP畫面上方就可以看到)
  • --address: 是否要指定 IP 位置
  • --zone: 選擇建立機器的區域
  • --machine-type: 機器的類型
  • --network: 網路相關設定
  • --service-account: 服務帳號
  • --boot-disk-size: 硬碟容量大小
  • --boot-disk-type: 硬碟類型
  • --metadata-from-file startup-script: 啟動機器第一個要執行的 script 位置

完整的範例如下:

gcloud compute --project=gce-test instances create test-vm \
    --address=123.123.123.123 \
    --zone=asia-east1-b \
    --machine-type=n1-highcpu-4 \
    --network=default --maintenance-policy=MIGRATE \
    --service-account=your_service_account \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --boot-disk-size=10GB --boot-disk-type=pd-standard 
    --metadata-from-file startup-script=/root/script/startupscript.sh

以上為常用的相關指令,其他指令放在下方參考資料請自行選用

2.查看未執行 startup-script 方式

如果順利地使用上方的方式啟動機器,並設置好自己要帶過去的 script 後,卻發現安裝的東西或是服務並沒有被啟動或設置,就可以使用以下指令(於啟動的 VM 環境中執行):

sudo journalctl -u google-startup-scripts.service

這個指令會列出開機執行後所執行的相關指令,如果有相關的錯誤也會寫在上面,就是 log 檔的概念。基本上只要是 script 本身的問題都可以用這個方式找到原因,以上分享。

有任何問題歡迎與我聯絡,謝謝。

參考資料

更多 GCE 指令請詳見:

https://cloud.google.com/compute/docs/gcloud-compute/

Stackoverflow:

https://stackoverflow.com/questions/44084713/startup-script-doesnt-seem-to-work


 上一篇
pyspark 系列- 於pyspark中不同column的array操作intersect pyspark 系列- 於pyspark中不同column的array操作intersect
How to intersect two array of different column in pyspark dataframe ?大家應該都有相關的經驗在使用 spark 處理 array 類型資料時常常會遇到很多卡卡的問題,尤其在
2020-01-10
下一篇 
pyspark 系列 - collect_list 與 collect_set 實例教學 pyspark 系列 - collect_list 與 collect_set 實例教學
How to use collect_list & collect_set in pyspark dataframe?在使用 spark 操作 dataframe 時常常會做合併 (groupby與 aggregation) 與展開
2019-12-12
  目錄