【原创】Team Foundation Server 域环境迁移
先说下此片博客的上下文:部门所在的业务被集团出售,因此我们所有的计算机和服务器都得重新命名,退出当前域加入新公司的域。对于PC和其他服务器,目前不存在太大问题。但是对于Team Foundation Server (下面简称TFS)却是相对麻烦, 尤其是在集成了Window SharePoint Service (下面简称WSS)时。
经过近一个月的研究与实验,基本上搞定了迁移工作。下面就详细说下迁移步骤:
1.首先不能在没有把握的情况下在生产环境中搞,且生产环境一直在提供服务。我们的TFS是在Hyper-V虚拟机上运行,平时用Windows Server Backup Tool (Windows Server 2008以上自带)这个工具做的虚机备份。首先要讲此备份还原到另外一个地方。
关于如何使用此工具,详情请见链接(以前工作中的写的,英文版,懒得翻译了)。关于还原备份到一个新的虚拟机,中间有个小技巧,详见我的另一篇随笔 【原创】还原Hyper-V 到一个新的虚拟机。我在这一步花了些时间,原因是还原出的虚机硬盘文件(*.VHD)可能是损坏的,表现在刚还原出的虚机在刚开机时提示要检测硬盘,等进入操作系统后,通过SQL Server Management Studio发现其中有一个主要的TFS数据库是suspend(挂起)状态。当时也尝试着去修复,但是无功而返。后来又尝试着还原虚机的备份几次,终于有一次是好了,至于原因,我也说不出为什么。
还有就是在还原成功后,需要创建一个新的虚机来挂这个VHD文件,再创建虚机时要注意:不要启用网络功能,否则到时会跟生产环境里虚机冲突,造成生产事故(很有可能有人的计算机连到这台测试TFS)。
2.到这一步,已经有还原出一个和最新的TFS一样的虚机来随便测试了,此时建议检查下还原出的虚机各项服务是否正常,测试项:
1. TFS Project collection web sites(http://localhost:8080/tfs )
2. WSS site(http://localhost)
3. WSS Central Adminhttp://localhost:17012
4.用TFS上的VS(如果有装)链接TFS
如果确认各项功能没有问题,此时强烈必须建议做一个虚机快照,用于在以后随时还原到此状态。
3. 用一个服务器本地账号(我这里叫 tfs-service-admin)来登录服务器,确保该账号拥有以下权限:
- Servers: Administrators (local Administrators group or equivalent)
- TFS: Team Foundation Administrators and Admin Console Users
- SQL Server: sysadmin
- SharePoint Products: Farm Administrators (if your TFS deployment integrates with SharePoint Products
4. 创建一个测试域,且我在该测试域所在的服务器启用了DNS服务,为了测试环境能够相互通过域名通信。
5. 下面的步骤就是要真正开始做迁移工作了,首先重命名此服务器(新名:CNXA1ERES-VM99),并退域加入工作组,这个步骤的目的有两个:
1.因为在计算机加入新公司的域,很有可能会被要求重命名(大公司的计算机都有一定的命名规则)。
2.避免在连上网络后,跟生产TFS服务器冲突。
6. 这一步非必须,停掉其他跟生产有关的非TFS服务,如CC.NET,因为我们的TFS服务器上还跑build服务,这样做是为了减少对生产环境的影响。
7. 启用虚拟的网络功能,从DHCP服务器获得IP,手动修改DNS为刚才所建的DNS服务器,如上所示,手动指定DNS是为了测试TFS能找到新的域服务器。
8. 这时就可以通过远程桌面连接测试TFS了,通过tfs-service-admin账号。
9.因为TFS服务器命名了,对应的数据库实例名也要修改,打开SQL Server Management Studio,:
- 实例名:CNXA1ERES-VM99
- Execute the following cmd in a new query.
exec sp_dropserver 'cnxa1eres-vm31'
go
exec sp_addserver 'cnxa1eres-vm99',local
go
3.Restart SQL server service.
4.execute “select @@servername” to check, it should be the new name.
10. 如果之前很多服务(Windows 服务和IIS应用程序缓冲池所用到的)都用的是一个域账号,请给予新的域账号同样的数据库权限。
11.修改TFS config文件中的服务器名,文件所在路径:C:\Program Files\Microsoft Team Foundation Server 11.0\Application Tier\Web Services\web.config.
12.将新的域账号加到如下组:Local Administrator, WSS_WPG, WSS_ADMIN & IIS_WPG
13. 更新WSS的一些配置:
Run cmd as admin.
- Cd C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN
- stsadm –o renameserver –oldservername cnxa1eres-vm31 –newservername cnxa1eres-vm99
- stsadm -o updatefarmcredentials -userlogin Touchpoint\administrator -password Password1
- stsadm -o updateaccountpassword –noadmin -userlogin Touchpoint\administrator -password Password1
- stsadm.exe -o spsearch -farmserviceaccount Touchpoint\administrator -farmservicepassword Password1 (execute failed)
- stsadm.exe -o spsearch -farmcontentaccessaccount Touchpoint\administrator –farmcontentaccesspassword Password1(execute failed)
- stsadm.exe -o editssp -title SharedServicesProviderName -ssplogin Touchpoint\administrator -ssppassword Password1(execute failed)
- stsadm.exe -o osearch -farmserviceaccount Touchpoint\administrator -farmservicepassword Password1(execute failed)
- stsadm -o migrateuser -oldlogin DOMAIN\user -newlogin DOMAIN\user -ignoresidhistory
14.修改IIS应用程序缓冲池中的对应账号,重启IIS
15.修改服务中对应的账号,变成新的域账号。
16.Change the Service account to CNXA1ERES-VM99\Tfs-service-admin in Team foundation server administration console, and then restart the server.
17.Change the URLs in TFS console, to http:\\cnxa1eres-vm99.touchpoint.net:8080/tfs, test succeed.
18.Migrate TFS account
- Cd C:\Program Files\Microsoft Team Foundation Server 11.0\Tools
TFSConfig Identities /change /fromdomain:OldDomainName /todomain:NewDomainName /account:OldAccountName /toaccount:NewAccountName