使用 GitHub Action 快速建立免費的 VPC

會使用到的工具有二
1. Github Action
2. ngrok

先從 ngrok 取得一組 API Token 備用 ; 沒有帳號的同學請使用 Github / Google 帳號連動即可

接著處理 Github Action 的基礎設定

Create new repo: 記得選成 private ; 因為需要放 ngrok API Token

Master Branch 甚至也不用 commit 資訊,因為重點在 Actions 環節

接著準備 main.yml 資訊 ; 記得把 ${API Token} 替換成自己的資訊

# 1682879657
name: CI
on: [push, workflow_dispatch]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

    - name: package install
      run: sudo apt-get -qq install neofetch speedtest-cli aptitude php-cli

    - name: Download ssh config
      run: wget https://raw.githubusercontent.com/GogoZin/sshd/main/sshd_config -O sshd_config

    - name: replace ssh config
      run: sudo cp sshd_config /etc/ssh/sshd_config

    - name: restart ssh service
      run: sudo service ssh restart

    - name: Remove root password
      run: sudo passwd -d root

    - name: remove runner password

      run: sudo passwd -d runner

    - name: download ngrok package
      run: wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz

    - name: unzip ngrok package
      run: tar zxvf ngrok-v3-stable-linux-amd64.tgz

    - name: setup ngrok API token
      run: ./ngrok config add-authtoken ${API Token}

    - name: Tunel for SSH port
      run: ./ngrok tcp 22

直接 New 一份 workflow

因為 main.yml 已經準備好了,所以就 set up a workflow yourself

把 main.yml 貼完後 commit change

通常第一次 commit 完會自動執行,但如果需要重新執行時,也可以使用 Re-run all jobs 處理

點選 Build 也可以確認 CI/CD 狀態

這個時候我們可以回到 ngrok 確認資源啟動狀態 ; hmmm, endpoint 已經正常啟動了 ; 並且點選可以看到設備的基礎資訊

通常介面資訊就已經可以取得 SSH 接入方式了 ; 但如果使用量大的話 endpoint 變換其實是非常大的

所以寫了個程式擷取資訊

#!/bin/bash

api_endpoint="https://api.ngrok.com/endpoints"
authtoken="${ngrok_api_token}"
ngrok_version="2"

hostport=$(curl -sSL \
           -X GET \
           -H "Authorization: Bearer ${authtoken}" \
           -H "Ngrok-Version: ${ngrok_version}" \
           "${api_endpoint}" | jq -r '.endpoints[].hostport')

host=$(echo "${hostport}" | cut -d':' -f1)
port=$(echo "${hostport}" | cut -d':' -f2)

ssh "root@${host}" -p "${port}"

就連 ssh 接入設備也就是一下子的事

最後一定要備註的事,這 VPC 不是永久設備,過一陣子就會消失了

實際測試時間有長有短,但有帳面紀錄的時間我會說 43 min

 18:15:56 up 43 min,  1 user,  load average: 0.00, 0.00, 0.00
 18:15:57 up 43 min,  1 user,  load average: 0.00, 0.00, 0.00
 18:15:58 up 43 min,  1 user,  load average: 0.00, 0.00, 0.00
Connection to 0.tcp.ngrok.io closed by remote host.
Connection to 0.tcp.ngrok.io closed.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *