我希望在Windows 2012 R2基础架构上自动执行应用程序/角色/功能部署(无人值守),此项目需要数小时的编程,这就是我在这里提出的问题。
我想部署以下应用程序和角色:Active Directory,DNS,Sql Server 2012,Citrix XenApp Server,Citrix XenDesktop服务器,Citrix Datacollector,Citrix许可证服务器,Citrix Storefront服务器。
因此基本部署将在8台服务器上(已安装在ESXi上,仅配置ip配置)。
我想到了这种情况:
我将填写一个包含所有信息的CSV文件,并执行Powershell脚本来部署所有内容,我们可以想象一个脚本将为每个组件(sql,ad,dns,citrix等)调用不同的脚本。
我不想依赖任何工具(sccm,puppet或其他......),这就是我想从头开始创建它的原因 - >但也许我错了。
我还读到有一个名为 Powershell DSC 的新功能,以简化应用程序部署http://blogs.technet.com/b/privatecloud/archive/2013/08/30/introducing-powershell-desired-state-configuration-dsc.aspx 有一个简单的例子:如果你需要4个iis webserver,那么执行以下代码:
Configuration DeployWebServers
{
Node ("test1.domain.com","test2.domain.com","test3.domain.com","test4.domain.com")
{
Windows-Feature IIS
{
Name = "Web-Server"
Ensure = "Present"
}
}
}
DeployWebServers -OutputPath "C:\scripts"
Start-DscConfiguration -path "C:\scripts" -Verbose -Wait -Force
但在我的情况下,每个应用程序/角色或功能只有1个服务器,如果我理解的话,只有当您需要在(x)服务器上部署相同的配置时,此功能才有意义/强>
您的建议是什么?我应该选择从头开始编写powershell脚本吗?或者选择像木偶或厨师这样的解决方案(更容易),但在这种情况下,我将依赖于工具。
最好的解决方案是使用sql数据库 - >我的项目的最终目标是一个带有数据库的Web应用程序,该数据库将执行我的PowerShell脚本来部署我的基础架构
当然,从这个Web应用程序,我将通过表单填充我的数据库,我的powershell脚本将查询此数据库以获取信息(IP地址,客户端名称,域名,密码,用户......)**
感谢您的建议。
答案 0 :(得分:2)
Chef或Puppet将是最简单的前进方式,这两种工具已经存在了足够长的时间,你不必担心它们会从内部消失。两者都可以开箱即用,并且可以在比设计自己的系统时更短的时间内启动和运行。
话虽如此,使用PS解决方案的好处是它不需要在目标盒上安装任何代理(由于WinRM而连接)。最终,您可以将其作为Powershell模块包装起来,交给您的系统管理员,并完全控制引擎盖下的内容。 PS解决方案将为您提供完全控制,更好地理解底层流程 - 但这将耗费时间和其他设计难题。
总结一下:如果你有时间,意志或特定用例,那么请选择PS。否则做大男孩做的事情,并拯救自己重新发明轮子 - 或十七岁。
免责声明:我为以前的雇主做过PS事。
答案 1 :(得分:0)
如果您正在寻找可重复的部署解决方案,并且您不能使用一些简单,免费的基础架构,我建议您使用Windows ADK 8.1和MDT 2013(如果您正在使用Windows Server 2012 R2)。您可以开发前端以选择部署类型。所有信息都可以包含在任务序列中,而不是使用csv文件,并且可以配置为在不同条件下触发任务。
来自deploymentresearch.com的Johan Arwidmark开发了一个名为Hydration Kit的好例子,full Step-by-Step Guide设置了在Windows Server 2012 R2和SQL Server上运行的Configuration Manager 2012 R2基础架构2012 SP1,Hyper-V或VMware。如果你很好地问他,他可能会允许你将他的工作作为你项目的基础。