針對 Azure DevOps 內部部署,從一個環境移至另一個環境

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019

最常見的環境型移動案例是變更 Azure DevOps Server 部署的網域,無論是域名變更或從工作組移至網域。

重要

在某些情況下,您可能會想要變更 Azure DevOps Server 部署及其硬體的網域。 變更硬體是一種以還原為基礎的移動,因此,您絕不能合併這兩種移動類型。 請先完成 硬體移動,然後變更環境。

此外,在環境移動過程中變更 Azure DevOps Server 中的身分識別是最常造成衝突或問題的層面。 身分識別命令是功能強大的工具,但有某些限制。 在規劃您的移動時,請仔細閱讀相關資訊。 若要確保移動成功,請確定您了解下列需求:

  • 一旦用戶帳戶出現在 Azure DevOps Server 中,就無法移除或有另一個對應至該帳戶的帳戶。 例如,如果您要將 DomainA/UserA 移至 DomainB/UserB,Identities 命令只有在 domainB/UserB 尚未存在於 Azure DevOps Server 中時,才能移轉使用者。
  • 由於本機 Administrators 群組的成員會自動新增至 Azure DevOps Server,因此在變更網域或環境之前,請務必移除您想要從該群組移轉的任何帳戶。

如需進一步的背景資訊,請前往這裡,以取得 Azure DevOps Server 身分識別如何變更的詳細描述,包括工具的限制。

我們將在下列各節中逐步解說變更 Azure DevOps Server 部署環境的步驟:

  1. 請檢查使用權限和帳戶
  2. 停止 Azure DevOps Server 服務
  3. 備份數據
  4. 將 Azure DevOps Server 加入其新網域
  5. 移動 Azure DevOps Server 用戶和服務帳戶
  6. 設定 Reporting Services 和 Analysis Services
  7. 重新啟動 Azure DevOps Server 服務

請檢查使用權限和帳戶

若要成功變更 Azure DevOps Server 的環境,您必須是本機計算機上的系統管理員,以及部署相依 Azure DevOps Server 和所有軟體:SQL Server、報告,以及部署互操作的任何其他軟體,例如 Project Server。 不過,本機 Administrators 群組的所有成員都會自動包含在 Azure DevOps Server 中,這可能會在嘗試移轉帳戶時造成問題。 因此,當環境移動時,您應使用不想要移轉的帳戶。 您可以考慮加入只用於移動的特殊系統管理帳戶,並且使用該帳戶執行移轉。

驗證系統管理員層級的權限

  • 請確定您使用的帳戶是下列群組的成員:
    • 伺服器:系統管理員 (本機 Administrators 群組或對等群組)
    • Azure DevOps Server:Team Foundation 系統管理員和 管理員 主控台使用者
    • SQL Server:sysadmin

如果您不是其中一或多個群組的成員, 請立即取得許可權

既然確定您使用的帳戶擁有所有需要的使用權限,便可以開始檢查帳戶,查看您所要移動的環境中是否有任何衝突的名稱或群組。 我們已經知道本機 Administrators 群組成員的帳戶無法移轉,因此,我們先將其移除。

從本機 Administrators 群組移除要移轉的帳戶

  • 開啟本機 Administrators 群組,並移除您要移轉到新環境的帳戶。 對其他可能會受到影響的群組重複此步驟。

現在檢查目前 Azure DevOps Server 環境中的身分識別清單,並尋找新環境中可能存在於群組或個別用戶帳戶的潛在問題。

提示

考慮建立要移動的識別表或移轉對應,以做為環境移動的一部分,包括哪些帳戶可能無法自動移轉的相關詳細資訊。

檢查識別

  1. 在 Azure DevOps 應用層伺服器上,開啟具有系統管理許可權的 [命令提示字元] 視窗,流覽至 %ProgramFiles%\Microsoft Visual Studio 12.0 Team Foundation Server\Tools,然後執行下列命令來檢視系統中的身分識別:

    TFSConfig Identities
    
  2. 將會顯示識別清單。 請檢查這些使用者和群組,以確保環境中不會有潛在的身分識別重複專案或問題,而您將移動 Azure DevOps Server,並採取步驟來減輕任何潛在衝突。

停止服務

停止服務可確保在移動流程期間或之後,使用者無法對工作項目進行變更,或將原始程式碼簽入原始部署。

  1. 在應用層計算機上,開啟 [命令提示字元] 視窗,並將目錄變更為 Drive:\%programfiles%\TFS 12.0\Tools。

  2. 輸入下列 TFSServiceControl 命令:

    TFSServiceControl 停止

備份資料庫和 SQL Server Reporting Services 加密金鑰

  1. 開啟 Azure DevOps Server 的管理控制台,然後在 [排程備份] 頁面上,進行完整備份。 您在備份計劃中設定備份的所有項目皆會進行備份,但是會立即執行,而不會遵循計劃中排程的時間。 如果您的部署使用報告功能,您可以將加密金鑰備份為此備份組的一部分。

    您可以在工作完成時關閉視窗

    (如果您尚未設定備份,您必須先 建立計劃 ,才能進行完整備份。)

  2. 一旦完成份,請確認備份是否可用於儲存裝置或網路共用,以及您是否可從新硬體存取此備份。

將應用層伺服器加入其新網域

  1. 在每部伺服器上,開啟電腦的屬性。

  2. 將電腦設定變更為您要為其加入伺服器的網域或工作群組。

    如果系統提示您提供有權將此電腦加入網域之帳戶的使用者名稱和密碼,請提供適當的認證。

  3. 重新啟動電腦,網域的變更就會生效。

    注意

    重新啟動電腦之後,可能會出現無法啟動服務或驅動程式的警告訊息。 繼續執行下一個程序。

移動用戶帳戶和服務帳戶

如本主題開頭所述,如果您未謹慎規劃使用者移轉作業,移動帳戶就很有可能會遭遇困難。 TFSConfig Identities 命令無法將任何帳戶移轉至已存在於 Azure DevOps Server 中的帳戶。

如果兩個網域中的帳戶名稱相同,唯一的差異在於網域名稱,那麼您就可以使用 TFSConfig 識別的批次模式立即變更所有識別。 否則,您必須個別變更識別,並且指定不同的目標帳戶名稱,詳情如下所述。

  1. 在 Azure DevOps 的應用層伺服器上,開啟具有系統管理許可權的命令提示字元視窗,流覽至 %ProgramFiles%\Microsoft Visual Studio 12.0 Team Foundation Server\Tools,然後執行下列命令,將服務帳戶的服務標識符 (SID) 變更為新的網域:

    TFSConfig identities /change /fromdomain:OldComputerorDomainName /todomain:NewDomainName /account:OldTFSServiceAccount /toaccount:NewTFSServiceAccount
    

    警告

    如果您的服務帳戶是像 Network Service 之類的系統帳戶,您不能直接移轉服務帳戶,因為新的環境中已經有相同名稱的系統帳戶。 您必須執行兩階段流程變更。 請參閱 Identities Command中的範例。

  2. 若要移轉新環境中所有具有相同名稱的帳戶,請輸入下列命令:

    TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName
    

    如此將會批次處理帳戶。

  3. 如果您是新的網域包含一或多個身分識別,其中環境之間的名稱變更,則必須針對每個身分識別手動更新 SID。 例如,如果 Christie Church 在舊環境中的使用者帳戶是 Fabrikam\CChurch,在新環境中是 NewFabrikam\ChristieC,您就必須手動更新其 SID。 對於具有此需求的每一個帳戶,請輸入下列命令:

    TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName /account:OldAccountName /toaccount:NewAccountName
    
  4. 現在,請執行下列命令以更新服務帳戶:

    TFSConfig Accounts /change /AccountType:ApplicationTier /account:AccountName /password:Password
    
  5. 如果您的部署使用報告功能,請執行下列命令來更新用於報告的資料來源帳戶:

    TFSConfig Accounts /change /AccountType:ReportingDataSource /account:AccountName /password:Password
    
  6. 如果您的部署使用 Azure DevOps Proxy 伺服器,請執行下列命令來更新用於 Proxy 的服務帳戶:

    TFSConfig Accounts /change /AccountType:Proxy /account:AccountName /password:Password
    

    注意

    如果您要移至非信任的網域,您可能也需要手動將使用者和群組新增至小組、專案、集合和 Azure DevOps Server 本身。 如需詳細資訊,請參閱將使用者新增至專案設定專案集合的系統管理員許可權,以及設定 Azure DevOps Server的系統管理員許可權

  7. 如果您的部署已經與 Project Server 整合,您可能必須執行其他步驟來設定擁有作業所需權限的服務帳戶。 如需詳細資訊,請參閱 指派許可權以支援 TFS-Project 伺服器整合設定TFS-Project Server 整合

設定 Reporting Services 和 Analysis Services

如果您未在部署中使用報告,則可以略過此程序。

如果您將報表伺服器重新命名為這種行動類型的一部分,您必須將 Azure DevOps Server 重新導向至位於其新位置的報表伺服器。 您也必須重新啟動倉儲,並為 Analysis Services 手動重建資料庫。

  1. 開啟 Azure DevOps 的管理主控台,移至 [報告] 節點,然後編輯設定。

    報表仍然指向舊的伺服器

  2. 將三個索引標籤上的值全數變更,如此就能包含伺服器的新名稱。 確定您在新環境中提供資料來源帳戶的正確資訊。

    確定 3 個索引標籤中的資訊都正確無誤

  3. 選擇 [啟動作業 ] 以重新啟動報告。

  4. 選擇 [開始重建 ] 以重建倉儲。

設定備份

如果網路共用名稱或儲存裝置已隨網域名稱變更而一起變更,您需要更新排程的備份計劃,以指向這些重新命名的資源。

  • 在管理控制台中,移至 [排程備份] 節點,然後重新設定排程備份,以備份新伺服器上的 Azure DevOps Server 資料庫。 如需詳細資訊,請參閱 Create 備份排程和計劃

重新啟動服務

現在您已使用新環境的所有資訊更新 Azure DevOps Server,請重新啟動服務。

  1. 在 Azure DevOps Server 應用層計算機上,開啟具有系統管理許可權的命令提示字元視窗,並將目錄變更為 Drive:\%programfiles%\TFS 12.0\Tools。

  2. 輸入下列 TFSServiceControl 命令:

    TFSServiceControl unquiesce

問答集

問:我想要變更我的部署的實體伺服器,而非網域。 可以這麼做嗎?

答:可以。 這稱為硬體型移動,而步驟是在 從一個硬體移至另一個硬體中提供。 您不該嘗試合併「以環境為基礎的移動」與「以硬體為基礎的移動」。 請先完成硬體移動,再變更環境。