averie-woodard-111832

Background

最近有工作上的需求, 需要在GCP(Google Cloud Platform)上自動開機器 & run一些script. 所以找了相關文章&做一點筆記. 那文章中會用到 gcloud 這個google提供的指令. (基本上你在google開VM都會預載吧)

Start

$ gcloud compute instances create example-instance-1 --zone us-central1-a --machine-type n1-standard-1 --image debian-7-backports

先看一個很基本的指令, 然後來稍微說明一下這個指令的意思.

  • create example-instance-1 => 創造一個 instance 叫 example-instance-1
  • --zone us-central1-a => 設定zone
  • --machine-type => 指定你想要的機器. (這很重要啊, 別開錯機器)
  • --image => 指定你原先創好的image檔. (通常都是先設好環境在創立image檔, 這樣比較快可以複製&deploy好到新的機器. 當然使用 Docker 可能也是你可以考慮的選擇之一)

Insufficient Permission Problem

如果你在運行的過程中遇到 Insufficient Permission 的問題, 請先到console確定你是否有相對應的權限, 如果都確定沒問題可以藉由下面這個指令來完成權限認證.

$ gcloud auth login

如果一切都沒問題你應該可以看到 console => Compute Engine => VM 執行個體 中多了一台Instance. 接著你可以登入看看是不是符合你 image 檔的設定.

Start, Stop & Delete

當然除了Create之外當然還有 Start, stop & delete的需求. 那指令基本上都蠻簡單的. 就看你個人的需求要怎麼運用. (GCP是以分鐘計費的, 這可能是你在運用的考量之一.)

Start

$ gcloud compute instances start example-instance-1

Stop

$ gcloud compute instances stop example-instance-1

Delete

$ gcloud compute instances delete example-instance-1

那在下 delete 指令時, 會跳出一個資訊來跟你確認是否真的要刪掉這個 instacne, 當然輸入y即可.

The following instances will be deleted. Attached disks configured to
be auto-deleted will be deleted unless they are attached to any other
instances. Deleting a disk is irreversible and any data on the disk
will be lost.
 - [example-instance-1] in [asia-east1-c]

Do you want to continue (Y/n)?  y

但如果你不想讓他跳出這訊息的話就用以下指令(有時候軟體自動化的時候得這樣搞).

$ gcloud compute instances delete example-instance -q

P.S. 使用 gcloud 來 start, stop instance 時 public ip 是不會變的. 但是利用console來停止&啟用時 public ip 是會變的.

Startup Scripts

接下來是設定開機就啟動的程式, 因為我平常都適用python所以就以python當做例子.

run.py

# !/usr/bin/python3

import os
import sys

os.system("touch /path/to/your/folder/empty")

運行的指令如下:

$ gcloud compute instances create example-instance --zone asia-east1-c --machine-type n1-standard-1 --image image-basic --metadata startup-script='python3 /path/to/yoor/file/run.py'

啟動後你可以登入到新的機器上面看有沒有順理產生出一個empty的file.

Reference