為 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 安裝在地端環境,就可以輕鬆的在不觸碰防火牆的情況下,以安全的方式佈署建置好的應用程式。
留言