自动化应用部署

7
我希望能自动化在 Windows 2012 R2 基础架构上部署应用程序/角色/功能(无人值守)。这个项目需要很多编程时间,这就是为什么我在这里询问的原因。
我想要部署以下应用程序和角色:Active Directory、DNS、Sql Server 2012、Citrix XenApp 服务器、Citrix XenDesktop 服务器、Citrix 数据收集器、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 web服务器,那么执行以下代码:
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脚本吗?还是选择像Puppet或Chef这样的解决方案(更容易),但在这种情况下,我将依赖于一个工具。
最好的解决方案是使用SQL数据库->我的项目的最终目标是一个带有数据库的Web应用程序,该数据库将执行我的PowerShell脚本以部署我的基础架构。
当然,从这个Web应用程序,我将通过表单填充我的数据库,并且我的PowerShell脚本将查询此数据库以获取信息(IP地址,客户端名称,域名,密码,用户...)
感谢您的建议。

1
你写道你已经“了解到有一个名为Powershell DSC的新功能”,但你并没有详细说明为什么在你目前的思考过程中没有使用它。如果你今天编写这种配置,我可能会建议使用DSC。实际上,你的确确切切的问题是什么,你已经尝试了什么,你发现自己遇到了什么问题等等都不太清楚,这使得帮助变得更加困难。但我的建议是看看DSC,因为那基本上就是你想要的(除了它不使用csv文件)。 - Robert Westerlund
1
我建议您阅读更多关于PowerShell DSC的内容,因为它比您在问题中提到的要复杂得多。 - Robert Westerlund
如果您只想将8个服务器每个角色部署一次,那么最好手动完成! - JPBlanc
@JPBlanc 这也是我的想法... 我想为我的脚本开发一个前端界面,你有什么想法吗? - Adeel ASIF
您可以使用Sapien Technology的“PowerShell Studio”编写您的PowerShell脚本前端。我很喜欢它。 - Bill
2个回答

2
Chef或者Puppet将是最简单的方法,这两个工具已经存在了很长时间,你不用担心它们会从互联网上消失。两者都可以直接使用,而且可以在比设计自己的系统更短的时间内使你开始运行。
话虽如此,选择PS解决方案的好处是它不需要在目标机器上安装任何代理(由于WinRM的连通性)。最终,你可以将其封装成一个PowerShell模块,交给你的系统管理员,并保留对底层过程的完全控制。 PS解决方案将为你提供完全的控制,更好地理解底层进程 - 但这将以时间和其他设计问题为代价。
总之:如果你有时间、意愿或特定的用例,那么选择PS。否则,像大公司一样做,节省时间,不要重复造轮子。
免责声明:我曾为以前的雇主做过PS相关工作。

非常感谢您的建议。这也是我的观点。我有5个月的时间完成这个项目,我认为这足够了。我会选择PS解决方案,因为这样可以拥有完全的控制权,并且理解底层过程非常有趣。我已经编写了一个部署Active Directory的脚本,它运行得非常完美。最后,当我完成所有脚本时,我会尝试开发一个基于HTML5的前端界面。 - Adeel ASIF

0
如果您正在寻找可重复部署的解决方案,并且不介意使用一些轻量级、免费的基础设施,我建议您使用Windows ADK 8.1和MDT 2013(如果您使用的是Windows Server 2012 R2)。您可以开发一个前端来选择部署类型。所有信息都可以包含在任务序列中,而不是使用csv文件,并且可以配置为在不同条件下触发任务。
Johan Arwidmark来自deploymentresearch.com,他开发了一个很好的示例,称为Hydration Kit,其中包含完整的逐步指南,可以在Hyper-V或VMware上运行的Windows Server 2012 R2和SQL Server 2012 SP1上设置Configuration Manager 2012 R2基础架构。如果您友好地向他提出请求,他可能会允许您将他的工作用作您项目的基础。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接