從 Azure DevOps 執行映像處理站
本文說明從 Azure DevOps (舊稱 Visual Studio Team Services) 執行映像處理站的所有必要準備工作。
注意
任何協調流程都將運作! Azure DevOps 並非必要。 映像處理站是使用 Azure PowerShell 指令碼來執行,因此可以使用 Windows 工作排程器、其他 CI/CD 系統等手動執行。
建立映像處理站的實驗室
設定映像處理站的第一個步驟,是在 Azure DevTest Labs 中建立實驗室。 此實驗室是映像處理站實驗室,我們可在其中建立虛擬機器並儲存自訂映像。 此實驗室會被視為整體映像處理站流程的一部分。 建立實驗室之後,請務必儲存名稱,因為稍後會用到它。
指令碼和範本
您的小組想要採用映像處理站的下一個步驟,是了解哪些功能可以使用。 DevTest Labs GitHub 存放庫公開提供映像處理站指令碼和範本。 以下是映像處理站和指令碼大綱:
- 映像處理站。 這是根資料夾。
- 設定。 映像處理站的輸入
- GoldenImages。 此資料夾包含 JSON 檔案,這些檔案代表自訂映像的定義。
- Labs.json。 小組註冊以接收特定自訂映像的檔案。
- 設定。 映像處理站的輸入
- 指令碼。 映像處理站的引擎。
本節中的文章提供有關這些指令碼和範本的詳細資料。
建立 Azure DevOps Team 專案
Azure DevOps可讓您儲存原始程式碼,在一個地方執行 Azure PowerShell。 您可以排程定期執行,讓映像保持最新狀態。 利用適合的功能來記錄結果,以便診斷任何問題。 不過使用 Azure DevOps 並不是必要條件,您可以使用任何可以連接 Azure 且可以執行 Azure PowerShell 的載入器/引擎。
如果您有想要改用的現有 DevOps 帳戶或專案,請略過此步驟。
若要開始使用,請在 Azure DevOps 中建立免費帳戶。 請造訪 https://www.visualstudio.com/ 並選取 Azure DevOps (舊稱 VSTS) 下方的 [免費開始使用]。 您必須選擇唯一的帳戶名稱,且務必選擇使用 Git 管理程式碼。 建立帳戶之後,請將 URL 儲存至您的 Team 專案。 以下是範例 URL:https://<accountname>.visualstudio.com/MyFirstProject
。
向 Git 簽入映像處理站
映像處理站的所有 PowerShell、範本和設定都位於公用 DevTest Labs GitHub 存放庫。 將程式碼放入新 Team 專案的最快方式,是匯入存放庫。 匯入整個 DevTest Labs 存放庫中的提取 (這樣您就可以取得額外的文件和樣本)。
請造訪您在前一步驟中建立的 Azure DevOps 專案 (URL 類似 https://<accountname>.visualstudio.com/MyFirstProject)。
選取 [匯入存放庫]。
輸入 DevTest Labs 存放庫的複製 URL:
https://github.com/Azure/azure-devtestlab
。選取匯入。
如果您決定只簽入所需的確切項目 (映像處理站檔案),請遵循這裡所述的步驟,以複製 Git 存放庫且只推送位於 scripts/ImageFactory 目錄的檔案。
建立組建並連接 Azure
此時,您已將來源檔案儲存在 Azure DevOps 的 Git 存放庫中。 現在,您必須設定管線來執行 Azure PowerShell。 您可以使用許多選項來執行這些步驟。 在本文中,您會使用組建定義以簡化流程,但組建定義也可適用於 DevOps 組建、DevOps 發行 (單一或多重環境)、其他執行引擎,例如 Windows 工作排程器或任何其他可執行 Azure PowerShell 的載入器。
注意
請務必記住,當要建立的自訂映像很多 (10 個以上) 時,有些 PowerShell 檔案的執行時間會很長。 免費裝載 DevOps 組建/發行代理程式的逾時設定為 30 分鐘,因此在開始建置許多映像之後,就無法使用免費裝載的代理程式。 不管您決定使用哪一種載入器,均會套用此逾時限制,所以最好提前確認您可以為長時間執行的 Azure PowerShell 指令碼延長一般逾時設定。 若是使用 Azure DevOps,您可以使用付費裝載的代理程式或使用您自己的組建代理程式。
若要開始,請在 DevOps 專案的首頁上選取 [設定組建]:
指定組建的名稱 (例如:組件映像並傳遞至 DevTest Labs)。
選取空的組建定義,然後選取 [套用] 以建立您的組建。
在這個階段,您可以選擇 [裝載] 以取得組建代理程式。
儲存組建定義。
設定組建變數
若要簡化命令列參數,請將驅動映像處理站的索引鍵值封裝成一組組建變數。 選取 [變數] 索引標籤,然後您會看到數個預設變數的清單。 以下是要輸入 Azure DevOps 的變數清單:
變數名稱 | 值 | 備註 |
---|---|---|
ConfigurationLocation | /Scripts/ImageFactory/Configuration | 此位置是存放庫中 Configuration 資料夾的完整路徑。 如果您匯入上述整個存放庫,左邊的值是正確的。 否則,請更新以指向 Configuration 位置。 |
DevTestLabName | MyImageFactory | Azure DevTest Labs 用作映像產生處理站的實驗室名稱。 如果您沒有實驗室,請建立。 請確定實驗室位於服務端點可存取的相同訂用帳戶中。 |
ImageRetention | 1 | 各類型要儲存的映像數目。 將預設值設為 1。 |
MachinePassword | ******* | 虛擬機器的內建系統管理員帳戶密碼。 此帳戶是暫時性的,因此請確定其安全無虞。 選取右側的小鎖圖示,確定它是安全的字串。 |
MachineUserName | ImageFactoryUser | 虛擬機器的內建系統管理員帳戶使用者名稱。 此帳戶是暫時性的。 |
StandardTimeoutMinutes | 30 | 我們應該等待的一般 Azure 作業逾時。 |
SubscriptionId | 0000000000-0000-0000-0000-0000000000000 | 實驗室所在且服務端點可以存取的訂用帳戶識別碼。 |
VMSize | Standard_A3 | 建立步驟所要使用的虛擬機器大小。 建立的虛擬機器是暫時性的。 大小必須是為實驗室啟用的大小。 請確認有足夠的訂用帳戶核心配額。 |
連接到 Azure
下一個步驟是設定服務主體。 服務主體是 Microsoft Entra ID 中的身分識別,可讓 DevOps 組建代理程式代表使用者在 Azure 中操作。 若要進行設定,請從新增您的第一個 Azure PowerShell 組建步驟開始。
- 選取 [新增工作]。
- 搜尋 Azure PowerShell。
- 找到之後,選取 [新增] 將工作新增至組建。 當您選取 [新增] 時,您會看到工作在左側顯示為 [新增]。
設定服務主體的最快方式是讓 Azure DevOps 為您執行設定。
- 選取您剛剛新增的工作。
- 在 [Azure 連線類型] 中,選取 [Azure Resource Manager]。
- 選取 [管理] 連結以設定服務主體。
如需詳細資訊,請參閱這篇部落格文章。 當您選取 [管理] 連結時,系統會引導您前往DevOps 的右方 (部落格文章中的第二個螢幕擷取畫面) 來設定 Azure 的連線。 設定連線時,請務必選擇 [Azure Resource Manager 服務端點]。
完成組建工作
如果您選取組建工作,您會在右窗格中看到應該填入的所有詳細資料。
首先,將組建工作命名為:建立虛擬機器。
選擇 [Azure Resource Manager],然後選擇您所建立的服務主體
選擇 [服務端點]。
在 [指令碼路徑] 中,選取右邊的 … (省略符號)。
瀏覽至 MakeGoldenImageVMs.ps1 指令碼。
指令碼參數應類似:
-ConfigurationLocation $(System.DefaultWorkingDirectory)$(ConfigurationLocation) -DevTestLabName $(DevTestLabName) -vmSize $(VMSize) -machineUserName $(MachineUserName) -machinePassword (ConvertTo-SecureString -string '$(MachinePassword)' -AsPlainText -Force) -StandardTimeoutMinutes $(StandardTimeoutMinutes)
將組建排入佇列
請將新組建排入佇列,藉此確認您正確完成所有設定。 當組建執行時,請切換至 Azure 入口網站,然後在映像處理站實驗室中選取 [所有虛擬機器],以確認一切正常運作。 您應該會在實驗室中看到建立了三部虛擬機器。
下一步
根據 Azure DevTest Labs 設定映像處理站的第一個步驟已完成。 在本系列中的下一篇文章中,您將學習如何將這些虛擬機器一般化並儲存至自訂映像。 然後將將這些虛擬機器散發到所有其他實驗室。 請參閱下一篇系列章:儲存自訂映像並散發至多個實驗室。