為 Azure DevOps Services 建立 Linux Self-hosted Agent

學員上課的時候都會關心,位於雲端的 Azure DevOps Services 要如何將應用程式佈署到地端 on-premise 環境?

主要有幾個方法,像是使用 Self-hosted Agent、使用 Deployment Group、或是透過 VPN 等機制,其中最簡單的就是 Self-hosted Agent 的建立,它同時也是我們想要進行客製化的建置環境或流程時,最有效的方式。
圖片

準備VM

想建立 Self-hosted Agent 非常簡單,以 Linux 的 Agent 為例,只需幾個步驟。

首先,請先建立一台 Linux VM,我們以 ubuntu 為例: 圖片

只需要選擇 24.04 的版本,設置適當的大小,並且以自訂密碼的方式配置 SSH (22)連接 port 登入即可:
圖片

接著,在 ADO 的 Agent pools 選擇 Default:
圖片

在跳出的畫面選擇 Linux
圖片

複製最新版的 agent 下載位置(上圖中 copy URL to clipboard 取得的網址即是)。內容應該會類似底下這樣:

https://vstsagentpackage.azureedge.net/agent/4.251.0/vsts-agent-linux-x64-4.251.0.tar.gz

接著,透過 SSH 登入剛才建立好的 ubuntu vm,採用的方式是:

ssh 帳號@IP
圖片

輸入密碼之後,如果成功,則會出現底下畫面:
圖片
遠端登入成功之後,即可對該伺服器下達指令。

請在 windows terminal 以 ssh 連線的 ubuntu 環境中,下達底下指令:

mkdir myagent && cd myagent

這會建立一個myagent資料夾,並且進入該資料夾中。
接著,請執行底下指令,來下載agent:

curl -O https://vstsagentpackage.azureedge.net/agent/4.251.0/vsts-agent-linux-x64-4.251.0.tar.gz

其中 curl -O 是下載檔案,而後面的url,請換成您剛才在上圖A中所複製到的最新版URL。

接著,再透過底下指令解壓縮:

tar zxvf vsts-agent-linux-x64-4.251.0.tar.gz

完成後,執行 ls 指令,會看到類似底下這些內容:
圖片

這樣我們待會就可以進行 agent 的設定了。

但在此之前,我們得先準備好PAT(Personal Access Token),以及為該linux vm準備 .net core sdk環境。

PAT 所需的權限,以 Agent Pools 的 『Read & manage』 權限即可:
圖片

接著,你可以在 vm 上透過底下指令安裝 .net sdk:

sudo snap install dotnet-sdk --classic

如果成功,執行底下指令會顯示 .net sdk 版本

dotnet --version

圖片

安裝好 .net sdk 之後,就可以試著啟動 agent ,我們在 myagent 資料夾中,執行 :

./config.sh
圖片

接著請依照上圖的方式設定,注意 URL 的部分要設定成你的 Azure DevOps 站台網址,其他都用預設值即可。完成後,你可以看從 orgnization 管理後台看到該 agent 已經註冊:
圖片

但由於尚未啟動,因此是紅燈,請接著執行底下指令:

./run.sh

就可以啟動 agent 了:
圖片

你會發現 agent 已經開始 Listening Jobs。

這時,如果你從 pipeline 啟動一個 self-hosted agent job,應當會看到該 agent 已經認領該 job 並且執行:
圖片

如此就大功告成囉。

透過這樣的方式,你只需要把 agent vm 安裝在地端環境,就可以輕鬆的在不觸碰防火牆的情況下,以安全的方式佈署建置好的應用程式。

留言

這個網誌中的熱門文章

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

實際嘗試使用DeepSeek API

在 Azure 上部署與使用 deepseek R1 model

使用 Dify 以No Code方式建立記帳機器人

使用 Dify 建立企業請假機器人