预配和配置目标环境

已完成

发布管道会将软件部署到目标环境。 但是,将随发布管道一起部署的不仅有软件。

如果你专注于持续交付,则基础结构即代码和将基础结构作为发布管道的一部分进行调整至关重要。

而当我们专注于基础结构的部署时,我们首先应该考虑可部署到的目标环境之间的区别:

  • 本地服务器。
  • 云服务器或基础结构即服务 (IaaS)。 例如,虚拟机或网络。
  • 平台即服务 (PaaS) 和功能即服务 (FaaS)。 例如,PaaS 和无服务器选项中的 Azure SQL 数据库。
  • 群集。
  • 服务连接。

让我们更深入地研究这些不同的目标环境和连接。

本地服务器

大多数情况下,当你将部署到本地服务器时,硬件和操作系统已经到位。 此处已有服务器且它已准备就绪。

大多数情况下已有硬件和操作系统,但有些时候没有。 在这种情况下,发布管道可以只专注于部署应用程序。

你可能需要启动或停止虚拟机(Hyper-V 或 VMware)。

用于启动或停止本地服务器的脚本应该是源代码管理的一部分,并且应该作为生成工件传递到发布管道。

你可以使用发布管道中的任务来运行用于启动或停止服务器的脚本。

要更进一步配置服务器,你应该查看 PowerShell Desired State Configuration (DSC) 等技术。

该产品将维护你的服务器,并将其保持在特定状态下。 当服务器更改其状态时,可将已更改的配置恢复为原始配置。

将 PowerShell DSC 等工具集成到发布管道中与添加任何其他任务没有什么不同。

基础结构即服务

使用云作为目标环境时,内容略有更改。 一些组织从其本地服务器直接迁移到云服务器。

部署与本地服务器的工作方式相同。 但当你使用云来为你提供基础结构即服务 (IaaS) 时,可在需要时使用云功能来启动和创建服务器。

此时,基础结构即代码 (IaC) 开始发挥重要作用。

通过创建脚本或模板,可以创建服务器或其他基础结构组件,如 SQL 服务器、网络或 IP 地址。

通过定义模板或使用命令行将文件保存在脚本文件中,你可以在发布管道任务中使用该文件在目标云上执行它。

服务器(或其他组件)将作为管道的一部分而创建。 之后,你可运行这些步骤来部署软件。

Azure 资源管理器等技术是按需创建基础结构的理想选择。

平台即服务

当你从基础结构即服务 (IaaS) 移到平台即服务 (PaaS) 时,你将从正在运行的云中获得基础结构。

例如,在 Azure 中,你可以创建 Web 应用程序。 云管理服务器、硬件、网络、公共 IP 地址、存储帐户,甚至 Web 服务器。

用户只需要关心该平台上的 Web 应用程序。

只需提供指导云创建 Web 应用的模板。 函数即服务 (FaaS) 或无服务器技术也是这样。

在 Azure 中称为 Azure Functions。 你只需部署应用程序,由云负责其余操作。 不过,你必须指导平台(云)创建一个可托管你的应用程序的占位符。

可在 Azure 资源管理器中定义此模板。 可以使用 Azure CLI 或命令行工具。

在所有情况下,基础结构是在脚本文件中定义的,并且与应用程序代码一起存在于源代码管理中。

群集

最后,你可以将软件部署到群集。 群集是一组服务器,用于承载大型应用程序。

当你运行基础结构即服务群集时,必须创建和维护该群集。 这意味着需要提供创建群集的模板。

你还必须确保向群集推出更新、bug 修补程序和补丁。 它可以与基础结构即服务相媲美。

使用托管群集时,应将其视为平台即服务。 你要指导云创建群集,由你来将软件部署到该群集。

运行容器群集时,可使用 AKS 等容器群集技术。

服务连接

当管道需要资源访问权限时,必须经常创建服务连接。

总结

无论选择哪种技术来托管应用程序,都应该在发布管道和源代码管理存储库中创建或配置基础结构。

基础结构即代码是持续交付的基础组成部分,允许你按需创建服务器和环境。