上一篇寫到的 Oracle Cloud 裝 VPN,似乎很多人有興趣。。
但是都被卡在「註冊帳號」跟「開機器」這兩個問題,不得其門而入~
註冊帳號的問題其實很玄,甲骨文去年剛開始推出終身免費的時候馬上就被一堆人刷爆
現在他們為了防止濫用,所以在剛開始註冊帳號的門檻就嚴格把關
而且有越來越嚴的跡象,然而註冊帳號失敗可以找客服處理,但過程異常複雜,詳細就不說了,不在本篇討論範圍
蒐集必要資料
先說明我這裡使用的是 Firefox 瀏覽器,你如果用其他瀏覽器可能會稍有不同,但大同小異
首先打開 Oracle Cloud 管理後台網站,然後去建立一個運算虛擬機頁面
先把你要的系統還有配置與 ssh key 通通選好加上,此時不要急著按左下角「建立」按鈕
按下鍵盤上快速鍵「Option + Command + E」,叫出開發者工具的「網路」視窗
會看到如下圖開發者工具,並在「網路」視窗
按下去之後,沒意外應該又會跳出「已經額滿」的錯誤提示,不過沒關係
你這時應該會看見開發者工具的網路欄位出現很多內容,如下圖
依照上圖找到「instances」跟著箭頭數字 1 ~ 2 點選,就會看到數字 3 ~ 8 的資料
這些都是等下 CLI 開機器時會需要用到的參數,請把 3 ~8 全部內容複製記錄下來
接下來點網頁右上角的「設定檔」頭像 icon,點一下自己 email 的那個選項
如上圖,會看見 OCID(user)的帳號字串,點一下複製,同樣記錄下來
繼續在網頁右上角的設定檔,這次點「租用戶」那個選項
如上圖,這裡是 OCID(tenancy)的帳號字串,同樣也是複製起來,稍等 CLI 設定過程都會用到
此時蒐集到的資料應該有以下幾個:
- availabilityDomain
- compartmentId
- subnetId
- ssh_authorized_keys
- shape
- imageId
- ocid1.user
- ocid1.tenancy
安裝設定 OCI 工具
現在要安裝 Oracle Cloud 專屬的 OCI 指令工具,官方有放在 GitHub 網站上面
有興趣可以去看看原始碼: https://github.com/oracle/oci-cli
他可以安裝在 macOS / Linux 系統上,也有 Windows 版本,以下我使用的是 Debian 系統安裝
就算系統不同,但主要過程應該是大同小異的
# 開始安裝
$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
安裝過程很簡單,看不懂就全部按下 Enter 保持預設即可
稍等片刻以後,應該就會看到安裝成功,然後可以下個指令檢查看看安裝的版本
$ oci -v
如上圖,正確顯示版本號碼的話,就表示已經可以開始使用 oci 指令了
接著開始做一些帳號設定,把你 oci 工作環境跟 Oracle Cloud 上面帳號連起來
$ oci setup config
如上圖,設定過程很簡單,主要是兩個 OCID 複製貼上,然後輸入你帳號所在區域
東京就是 ap-tokyo-1、首爾就是 ap-seoul-1
其他不懂的話就按 Enter 保持預設即可,最後會產生你帳號的公開密鑰跟私人密鑰
接下來我們要把你的公開密鑰貼到 Oracle Cloud 管理網站上面
# 以下路徑每個人有可能都會不同,請根據自己情況修改
$ cat /home/pi/.oci/oci_api_key_public.pem
完成以後,我們再回到終端機中,輸入以下指令,驗證一下有沒有問題
$ oci iam availability-domain list
如上圖,沒問題的話,即會回傳上圖那樣的東西,現在可以終於開始建立機器了~
# 以下內容請根據自己情況修改,絕對不要照抄
$ oci compute instance launch --availability-domain VpDT:AP-TOKYO-1-AD-1 --image-id ocid1.image.oc1.xxxx --subnet-id ocid1.subnet.oc1.xxxx --shape VM.Standard.E2.1.Micro --assign-public-ip true --metadata '{"ssh_authorized_keys": "ssh-rsa xxxxx"}' --compartment-id ocid1.tenancy.xxxxx
--shape-config '{ "ocpus": 4, "memoryInGBs": 24 }'
上面指令輸入完畢後,就會回傳類似下面資料
ServiceError:
{
"code": "InternalError",
"message": "Out of host capacity.",
"opc-request-id": "0EBE13DB9B58469C929xxx"
"status": 500
}
看到這個回傳代碼 500 就是「額滿」的意思,表示你的指令輸入沒錯
接下來我們把上面指令放到一個 .sh 檔案裡面再去建立 crontab 讓系統自動定時執行 .sh
$ nano ociauto.sh
貼入以下內容並保存:
#!/bin/sh
/home/pi/bin/oci compute instance launch --availability-domain VpDT:AP-TOKYO-1-AD-1 --image-id ocid1.image.oc1.xxxx --subnet-id ocid1.subnet.oc1.xxxx --shape VM.Standard.E2.1.Micro --assign-public-ip true --metadata '{"ssh_authorized_keys": "ssh-rsa xxxxx"}' --compartment-id ocid1.tenancy.xxxxx
接著執行下面指令新增系統定時執行任務:
# 先賦予 ociauto.sh 執行權限
$ chmod +x ociauto.sh
$ crontab -e
進入後,在最底下加入下面一行
* * * * * /bin/bash /home/pi/ociauto.sh > /home/pi/ociauto.log 2>&1
保存退出後,系統就會每一分鐘執行一次建立虛擬機的指令
並且會把每次執行結果記錄到 ociauto.log 裡面去,想要即時看到每次執行結果可以透過以下指令
$ tail -F ociauto.log
如果新增虛擬機成功的話就會出現類似以下資料
{
"data": {
"agent-config": {
"is-management-disabled": false,
"is-monitoring-disabled": false
},
"availability-domain": "VpDT:AP-TOKYO-1-AD-1",
"compartment-id": "ocid1.tenancy.oc1..xxxxx",
"dedicated-vm-host-id": null,
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "[email protected]",
"CreatedOn": "2020-02-21T11:16:35.125Z"
}
......
一個免費帳號最多只能開兩台虛擬機,所以在成功建立兩台虛擬機以後,錯誤資料會變成:
ServiceError:
{
"code": "LimitExceeded",
"message": "The following service limits were exceeded: vm-standard-e2-1-micro-count. Request a service limit increase from the service limits page in the console. ",
"opc-request-id": "E652F9E62E484Cxxxxxx"
"status": 400
}
此時記得再回去 crontab 裡面,把新增的那個定時執行指令,整行刪除保存退出即可
目前已知每隔幾天甲骨文都會放出一些名額,基本上也是天天都有聽到有人新開到機器
北美跟歐洲機器很好開,讓大家都卡關的是韓國首爾以及日本東京
而且甲骨文似乎把驗證帳號變的更嚴格了,最近許多人都收到信用卡二次驗證扣款的通知
如果沒能通過的話,可能帳號會直接被關閉,所以填寫註冊資料時候真的不能亂寫阿
不然哪天被砍帳號或者砍機器也真的只能怪自己了。。。
就先這樣~希望大家都能順利開出機器~😉