gpt4 book ai didi

.net - Puppet 是在站点关闭的情况下从 TFS 拉取部署 .NET 站点的正确工具吗

转载 作者:行者123 更新时间:2023-12-03 18:04:06 25 4
gpt4 key购买 nike

我们有一个需要自动部署到多个服务器的新应用程序。我需要知道Puppet是否可以用于以下场景。

申请

该应用程序是 .NET 和 PHP 与 SQL Server 或 PostGRE 数据库的组合。首次启动应用程序时,使用 Entity Framework 在 C# 中处理数据库迁移。该应用程序尚未完成,但我正在通过可行性研究使部署自动化。

构建和持续集成

我们在云中使用 Team Foundation Service (TFS) 进行构建。

目标环境

该应用程序将安装在云中和客户的基础设施内。云平台将由我们控制,所以我想这并不难。我可以看到 Puppet 配置该环境的好处。

但是,当服务器由客户端的基础架构托管时,我可能无法控制对服务器的访问。我必须假设服务器只能访问端口 443(和 80,但我不会那样更新软件)。我想我们将拥有对我们需要安装的任何服务器的管理员访问权限,我更关心的是通过公司防火墙访问服务器。

环境将是用于 .NET Web 和数据库服务器的 Server 2008 (IIS7),也可能是运行 PHP 的 Apache 的 linux 服务器。由于应用程序尚未完成,我还不能确定 PHP 的限制是什么。我假设我必须部署到两种不同类型的服务器。

部署环境

将留出一台服务器用于编排部署。 Puppet/任何其他技术都可以在这里安装。

所需的过程

请原谅我在这里大量使用 Puppet。我不确定它的开箱即用的局限性,我很感激有一个 Forge,其中有很多插件可用。这种自动化水平对我来说是新的,所以我很乐意对我的步骤提供反馈!

  • TFS 构建完成,运行单元测试并且构建被标记为 OK。
  • Puppet 发现有新版本并抢走了包裹
  • Puppet 配置立即将新包部署到集成测试服务器(云)
  • Puppet 在集成测试服务器上启动 MSBuild
  • 完成后,Puppet 更新 TFS 构建的状态
  • 然后客户端服务器上的 Puppet 代理下载新包(通过 SSL 拉)
  • Puppet 等待分配的时间来安装系统(假设此时没有系统管理员醒着!)
  • Puppet 在数据库中设置一个标志,所有 Web 客户端都在轮询该标志以检查“关闭消息”
  • Puppet 等待分配的时间(供用户保存他们的工作)
  • Puppet 将 IIS/Apache 站点重新指向维护页面
  • Puppet 开始备份代码和数据库
  • Puppet 在 Linux 和 Windows 服务器上执行包安装、配置更新。
  • Puppet 触发烟雾测试(.NET 控制台应用程序)并等待完成
  • 如果成功,Puppet 重新指向 IIS/Apache
  • 如果不成功,Puppet 会回滚 Windows 和 Linux 服务器。
  • Puppet 在数据库中设置标志表示系统再次上线
  • Puppet 向服务器报告。

  • 假设
  • 将没有负载平衡,因此将只有一台 .NET 服务器和一台 Linux 服务器。将来可能需要这样做,但它可能是 YAGNI。
  • 最佳答案

    对于客户端基础结构,我会使用 Windows Installer MSI 对产品进行收缩包装。 TFS 云构建服务器上有 Windows Installer XML,您可以使用它来构建安装程序。

    将安装程序交付给客户并让其完成所有工作。就像从 MSDN 下载 TFS 并将其安装在本地服务器上一样。

    您还可以在网站上发布 MSI,并使用在客户端上运行的自动更新模式将其拉下来并执行。

    关于.net - Puppet 是在站点关闭的情况下从 TFS 拉取部署 .NET 站点的正确工具吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362493/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com