我的客户正在使用TFS 2018 作为其 CI/CD 工具。我知道您可以使用 TFS 来部署ARM 模板到Azure但我以前从未这样做过。我通常只使用门户或 powershell。我知道我需要创建一个管道执行部署,但我还有一些其他令我困惑的问题:
- 是构建和发布 管道(两者)均需ARM 模板如果基础设施没有改变(或几乎从不改变)?我的印象是大多数人使用构建管道来验证模板或他们的代码,然后将发布部署到 Azure 或其他地方。
- 我可以用吗一个 ARM 模板其中包含部署所需的所有资源,还是必须部署单独的模板(ASP,然后是 Web 应用程序,然后是存储帐户,然后是 Redis)?
- A资源组在我部署任何内容之前都是必需的。我可以将资源组创建步骤与其他所有内容一起包含在 ARM 模板中(RG + 一个模板中的所有资源),还是我需要一个 RG 模板,然后再使用其他模板?
- 如果他们的多种环境(开发、测试、生产)我需要多个构建/发布管道为了每个环境或者可以配置o指向每个环境的管道? 每个环境中的资源会有所不同命名约定所以我不确定除了必须更新 ARM 模板中的值之外这会如何影响其他事情。
如果您对我上述问题有任何建议/意见,我将非常感激,谢谢!
答案1
首先,我建议您在尝试从 Azure DevOps 执行操作之前,先熟悉如何使用 ARM 模板并在本地部署它们。这将帮助您了解正在发生的事情,并确保在添加 Azure DevOps 的额外复杂性之前,您的模板可以正常工作。您可以从 PowerShell 或 CLI 部署 ARM 模板。
回答您的问题:
您可以使用其中任意一种。无需使用构建或发布管道,ARM 模板部署可以与其中任意一种配合使用。选择通常取决于您的流程以及您希望部署如何工作。构建管道通常创建用于测试的资源或作为构建的一部分,而发布通常用于发布应用程序和支持阶段、门等。综上所述,我还建议您查看较新的基于 YAML 的管道,这些管道消除了构建和发布之间的区别,因为这是未来的重点。
您可以做任何事。您可以拥有一个可以完成所有工作的大型 ARM 模板,只需确保在模板中设置依赖项即可,或者您可以拥有多个模板。如果您有多个模板,则可以在 Azure DevOps 中作为一步一次运行它们,或者您可以使用嵌套模板让顶级模板调用子模板。
您可以将资源组创建为 ARM 模板的一部分,但这确实会使它变得有点复杂。ARM 模板具有多个范围,大多数资源都是在资源组范围内创建的(因为它们位于资源组内),但资源组是在订阅范围内创建的(它们位于订阅内)。要在模板中创建两者,您需要在订阅范围内运行部署,然后使用嵌套模板部署资源范围项。我对如何做到这一点有详细的解释这里。
如果您想在单个管道中部署到多个环境,您可以这样做,您需要使用发布管道(而不是构建)或 YAML 管道。这两者都支持使用“阶段”,其中每个阶段都可以是一个环境。然后,您可以按照您喜欢的顺序部署到每个环境。您可以在此处找到详细信息这里对于发布管道和这里用于 YAML。
答案2
我将使用带有资源组部署任务的发布管道。这是使用 TFS 实现此目的的简单方法。