在本地从一个环境Azure DevOps另一个环境

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2013

备注

Azure DevOps Server 以前名为 Visual Studio Team Foundation Server。

最常见的基于环境的移动方案是更改 Azure DevOps Server 部署的域,无论是域名更改还是从工作组移到域。

重要

在某些情况下,你可能想要更改部署Azure DevOps Server及其硬件。 更改硬件是基于还原的移动,请勿合并两个移动类型。 首先完成 硬件移动,然后更改环境。

此外,在Azure DevOps Server中更改标识通常是导致冲突或问题的方面。 标识命令是一个功能强大的工具,但它有一些限制。 作为计划移动的一部分,请阅读该工具的相关限制。 若要帮助确保移动成功,请确保您了解下列要求:

  • 用户帐户存在于 Azure DevOps Server,将无法删除或将另一个帐户映射到该帐户。 例如,如果要将 DomainA/UserA 移动到 DomainB/UserB,则"标识"命令仅在域B/UserB 中不存在时Azure DevOps Server。
  • 由于本地管理员组的成员会自动添加到 Azure DevOps Server,因此,在更改域或环境之前,请确保删除要从该组迁移的任何帐户。

有关进一步的背景信息,请转到此处,详细了解标识更改Azure DevOps Server工作,包括工具的限制。

以下部分将演练更改部署Azure DevOps Server环境的步骤:

  1. 检查权限和帐户
  2. 停止Azure DevOps Server服务
  3. 备份数据
  4. 将Azure DevOps Server加入到其新域
  5. 为新环境配置 SharePoint 产品
  6. 移动Azure DevOps Server和服务帐户
  7. 配置 Reporting Services 和 Analysis Services
  8. 重启Azure DevOps Server服务

检查权限和帐户

若要成功更改 Azure DevOps Server 的环境,需要是本地计算机以及 Azure DevOps Server 以及部署所依赖的所有软件的管理员:SQL Server、报告、SharePoint 产品 ((如果部署使用报表或 SharePoint) )以及部署互操作的其他软件,例如 Project Server。 但是,本地管理员组的所有成员都将自动包含在Azure DevOps Server,这可能会导致在尝试迁移帐户时出现问题。 因此,您应使用无需作为环境移动一部分迁移的帐户。 您可能会考虑为了移动添加一个特殊的管理帐户,并使用该帐户执行迁移。

验证管理员级别的权限

  • 确保您要使用的帐户是下列组的成员:
    • 服务器:Administrators(本地管理员组或权限相同者)
    • Azure DevOps Server:Team Foundation 管理员和管理控制台用户
    • SQL Server:sysadmin
    • SharePoint产品:场管理员 (你的 Azure DevOps Server 部署与 SharePoint Products)

如果你不是其中一个或多个组的成员,则 现在获取权限

既然您确定要使用具有所有必需权限的帐户,那么现在可以检查帐户,看看您将迁移到的环境中是否存在任何名称或组冲突。 我们已经知道作为本地 Administrators 组的成员的帐户无法迁移,那么让我们先删除这些帐户。

删除要从本地 Administrators 组迁移的帐户

  • 打开本地 Administrators 组,然后删除要迁移到新环境的所有帐户。 对可能受影响的任何其他组重复此步骤。

现在,检查当前环境中标识Azure DevOps Server,并查找新环境中可能存在的组或单个用户帐户的任何潜在问题。

提示

请考虑为要作为环境移动一部分移动的标识创建一个表或一个迁移映射,包括可能无法自动迁移的帐户的详细信息。

检查标识

  1. 在 Azure DevOps 的应用程序层服务器上,打开具有管理权限的命令提示符窗口,导航到 %ProgramFiles%\ Microsoft Visual Studio 12.0 Team Foundation Server \ 工具, 并运行以下命令以查看系统中当前标识:

    TFSConfig Identities
    
  2. 标识的列表将显示。 检查这些用户和组,以确保在要移动到的环境中标识没有潜在的重复项或Azure DevOps Server,并采取措施缓解任何潜在的冲突。

停止服务

停止服务可帮助确保用户不能在移动过程中或完成后更改工作项或将源代码签入原始部署中。

  1. 在应用程序层计算机上,打开命令提示符窗口,将目录更改为" 驱动器: \ %programfiles% \ TFS 12.0 \ 工具"。

  2. 键入以下 TFSServiceControl 命令:

    TFSServiceControl 静止

备份数据库和 SQL Server Reporting Services 加密密钥

  1. 打开管理控制台Azure DevOps Server,在"计划 备份"页上执行完整备份。 该备份将备份你在备份计划中对备份进行的任何配置,但它将立即执行此操作,而不是根据计划的时间执行。 如果你的部署使用报告,则可将加密密钥备份为该备份集的一部分进行备份。

    你可以在作业完成时关闭窗口。

    (如果未配置备份,必须创建一个 计划,然后才能 进行完整备份。)

  2. 完成备份后,请验证该备份在存储设备或网络共享中是否可用,以及你是否可从新硬件访问此备份。

将应用程序层服务器加入其新域

  1. 在每台服务器上,打开计算机的“属性”。

  2. 将计算机的设置更改为您要将服务器加入到的域或工作组。

    如果系统提示您提供有权将此计算机加入到域的帐户的用户名和密码,请提供相应的凭据。

  3. 重新启动计算机以使域更改生效。

    备注

    重新启动计算机后,可能会显示一条警告,指示服务或驱动程序无法启动。 请继续下一个过程。

为新环境配置 SharePoint 产品

如果要将环境更改到与以前的环境不受信任的环境,可能需要先配置 SharePoint 产品,然后才能正常运行。 SharePoint 站点上的“人员选取器”Web 控件中提供了有关从目录服务导入的用户的信息。 站点管理员和其他用户可使用人员选取器在分配权限时选择人员和组。 如果有关用户的信息位于多个林上,或位于没有针对所有用户的信任关系的一个林上,则可能需要其他步骤来确保可通过此 Web 控件使用所有人员和组。

如果未在部署中使用 SharePoint Products,或者新环境对旧环境具有双向信任,或者如果 Azure DevOps 的管理控制台中未显示 SharePoint Web 应用程序的错误,请跳过此过程。

  1. 在支持部署 Azure DevOps Server 的 SharePoint 场的每个服务器上,使用管理权限打开命令提示符窗口,将目录更改为 %programfiles% Common Files Microsoft Shared \ Web \ Server \ Extensions \ 15 \ BIN。

  2. 键入以下命令,其中 "密钥"是部署产品时SharePoint加密密钥:

    stsadm.exe -o setapppassword -password Key

    备注

    此密钥是一个加密字符串,用于对用于访问林或域的帐户的密码进行加密。 场中每个服务器的加密字符串必须相同,但应针对每个场使用唯一字符串。

  3. 键入以下命令,其中 domain:DNSName 是目标林或域及其 DNS 名称 ,user,password 是有权访问目标林或域的帐户的用户名和密码 ,WebApp 是支持部署 Azure DevOps Server 的 Web 应用程序的名称:

    stsadm.exe -o setproperty -pn peoplepicker-searchadforests -pv domain:DnsName,user,password -url http://WebApp

  4. 键入以下命令,其中 URL 是支持项目集合的站点集合的 URL,Port 是分配给该网站集的端口号 ,UserName 是充当该网站集所有者的帐户的用户名:

    stsadm.exe -o siteowner -url http:// URL: Port -ownerlogin UserName

  5. 对部署网站集使用的每个网站集重复Azure DevOps Server步骤。

移动用户帐户和服务帐户

如本主题开头所提到,移动帐户是您最可能遇到问题的情况,特别是您未仔细计划用户迁移时。 TFSConfig Identities 命令无法将任何帐户迁移到已存在于 Azure DevOps Server。

如果两个域中的帐户名称相同,并且唯一不同的是域名,则您可使用 TFSConfig Identities 的批处理模式一次性更改所有标识。 否则,您必须逐个更改标识并指定不同的目标帐户名称,如下详述。

  1. 在 Azure DevOps 的应用程序层服务器上,打开具有管理权限的命令提示符窗口,导航到 %ProgramFiles%\ Microsoft Visual Studio 12.0 Team Foundation Server \ 工具,然后运行以下命令,将服务帐户的服务 () SD) 更改为新域:

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

    警告

    如果服务帐户是系统帐户(如 Network Service),则您无法直接迁移服务帐户,因为新环境中存在具有相同名称的系统帐户。 您将必须执行一个两阶段过程更改。 请参阅标识命令 中的示例

  2. 若要迁移在新环境中具有相同名称的所有帐户,请键入以下命令:

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

    这将对帐户执行批处理。

  3. 如果新域包含一个或多个名称在环境之间发生更改的标识,则需要手动更新每个标识的 SID。 例如,如果前一个环境中为 Fabrikam \ CChurch,但新环境中是 NewFabrikam 则用户的帐户是 Fabrikam CChurch,则你必须手动更新她的 \ 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,请运行以下命令来更新用于代理的服务帐户:

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

    备注

    如果要移动到不受信任的域,可能还需要手动将用户和组添加到团队、项目、集合和Azure DevOps Server本身。 有关详细信息,请参阅将用户添加到项目项目集合设置管理员权限和为项目设置管理员Azure DevOps Server。

  7. 如果您的部署与 Project Server 集成,则可能需要执行其他步骤来为服务帐户配置操作所需的权限。 有关详细信息,请参阅分配权限以支持TFS-Project Server 集成和ConfigureTFS-Project Server 集成

配置 Reporting Services 和 Analysis Services

如果您在部署中不使用报告,则可跳过此过程。

如果在此类移动中重命名了报表服务器,则必须Azure DevOps Server位置将报表服务器重定向到该报表服务器。 您还必须重新启动仓库并手动为 Analysis Services 重新生成数据库。

  1. 打开管理控制台Azure DevOps,转到"报告"节点,然后编辑设置。

    报表仍指向旧服务器

  2. 更改全部三个选项卡上的值,以便它们包含服务器的新名称。 确保为新环境中的数据源帐户提供正确的信息。

    确保所有 3 个选项卡显示的信息都正确

  3. 选择 "启动作业" 以重启报告。

  4. 选择 "开始重新生成 "以重新生成仓库。

配置备份

如果网络共享名或存储设备随域名的更改而更改,则需要更新已计划的备份计划,以指向这些重命名的资源。

  • 在管理控制台中,转到"计划备份"节点,重新配置计划的备份,以Azure DevOps Server新服务器上备份数据库。 有关详细信息,请参阅 创建备份计划和计划

重新启动服务

现在,你已使用Azure DevOps Server环境的所有信息更新了服务,请重启服务。

  1. 在Azure DevOps Server层计算机上,打开具有管理权限的命令提示符窗口,将目录更改为"驱动器 \ %programfiles% \ TFS 12.0 \ 工具"。

  2. 键入以下 TFSServiceControl 命令:

    TFSServiceControl unquiesce

问题解答

问:我想要更改部署的物理服务器,而不是域。我可以这样做吗?

答: 是的。 这称为基于硬件的移动,在将一个硬件移动或克隆到另一个 硬件中提供了这些步骤。 你不应尝试将基于环境的移动与基于硬件的移动合并。 先完成硬件移动,然后再更改环境。