Azure DevOps 跨賬號連線 Azure 服務

Grant_Allen發表於2021-04-10

一,引言

  由於新申請的 Azure DevOps 賬號中的私有專案不在享受託管代理提供的1800分鐘的免費時間,又不想花錢付費,那我們只能另想版本解決沒有並行作業的問題。

-------------------- 我是分割線 --------------------

新組織中的私有專案無法獲得1800分鐘的免費試用期限

於是,我們只能利用舊的Azure DevOps 連線到新的 Azure 賬號的訂閱上。通過我的調查。Azure DevOps 和 Azure 的關聯是可以通過 Azure DevOps 上的手動管理 Service connections。既然如此,我們嘗試利用手動管理型別為 “Azure Resource Manager” 的服務連線。

二,正文

1,建立可用的Service Principal並設定其許可權

1.1,建立服務主體

  建立 Service Principal(服務主體)的方式,我之前都講過的,可以通過 Azure CLI 登入到Azure 上,利用  az sp create ....... 進行建立,還可以手動進行建立,今天我們手動演示如何建立Service Principal。

首先,我們登入到Azure Portal 上,在 Azure Active Directory 上註冊應用程式,首頁左側選單點選 “Azure Active Directory”

選擇 “Manage=》App registrations”,點選箭頭所指的 “+ New registration”

輸入 display name "Allen_ServiceConnection",點選 “Register”

建立完成後,就可以跳轉到當前註冊的 application 頁面。接下來,我們需要為當前應用建立密碼

選擇 “Manage=》Certificates & secrets”,點選 “+ New client secret”

在新增客戶端金鑰頁面,需要我們輸入相關引數

Description:“Allen_ServiceConnection_Secret”

Expires:“24 months”(可以根據自己的實際情況選擇過期時間)

點選 “Add”

建立完成後,我們儘快複製當前應用的客戶端金鑰的值(切記),一旦重新整理頁面重新切換到當前頁面,我們就不能再複製金鑰的值了。

1.2,設定 Service Principal 的許可權

我們都知道在之前介紹的利用Azure CLI 建立 sp 的時候,給的角色為 “Contributor”,範圍為 “當前subscription”。同樣的,我們手動也需要為當前應用新增對應的許可權

找到當前訂閱,選擇 “Access control”,切換到 “Role assignments”,點選 “+Add”

點選 “Add role assignment”(角色分配)

輸入相關角色分配的引數

Role  選擇:‘Contributor“

Assign access to:”User,group,or service principal“

Select 輸入:”Allen_ServiceConnection”,並選擇當前會員

點選 “Save” 進行儲存操作

同時我們可以在當前角色指派頁面看到新增的資訊

2,Azure DevOps 中建立Service connection

我們嘗試建立一個新的專案 "CnBateBlog_Test",並且點選左下角的 “Project Settings”

找到 “Pipeline=》Service connections”,點選 “Create service connection”

選擇 “Azure Resource Manager”,並且點選 “Next”

Authentication method(驗證方式) 選擇 “Service principal(manual)”,點選 “Next”

大家需要注意的是,如果選擇自己對於的 Azure 環境,如果跟我一樣,那麼就可以跟我選擇一樣的 “Azure Cloud”

接下來需要輸入剛剛建立好的 Service Pricipal 的資訊

Scop Level 選擇:“Subscription”

Subscription Id:“xxxxxxxx”(自己的訂閱ID)

Subscription Name:“Visual Studio Enterprise”(輸入自己的訂閱名稱)

Service Principal Id 輸入剛剛在 Azure Active Directory 中註冊的 App 的 Id

Credential (憑據) 選擇:“Service principal key”

Service principal key 就是剛剛建立的 application 的Client Screct

Tenant ID:“當前sp 的租戶 id”

輸入完 sp 的資訊,我們可以先點選 “Verify” 驗證一下,沒有問題的話再輸入其他引數

Service connection name:“Allen_ServiceConnection”

點選 “Verify and save”(儲存之前,我們得保證手動輸入的sp 的資訊都是正確的

驗證儲存完成後,我們可以看到手動建立好的 Service connection 

3,驗證Service connection 的可用性

測試的專案還是  CnBateBlogWeb

Azure DevOps 中建立 Release Pipeline,並且設定相關引數

記得配置 App Settings 資訊,最後點選 “Create release”

等待部署完成之後,我們先檢視部署狀態

並且複製 “cnbateblogweb01” 的 URL 在瀏覽器中嘗試訪問

訪問成功!!!

三,結尾

參考資料:Azure Pipeline管理服務連結

github:https://github.com/yunqian44/CnBateBlogWeb

作者:Allen 

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

相關文章