1. 前言

Azure支持通过多种方式创建资源, 一般来说, 我们应该尽量减少手工创建资源。

2. 手动创建

这是最常见和最不推荐的,当需要的资源比较多的时候, 每次都需要手动工作来重现,并为非常容易人为错误留下余地。

手动创建

3. 手动创建资源并保存脚本

有些人通过手动创建和保存脚本来解决问题。这也一样会有问题。将Azure资源导出为Json格式的ARM模板时, 通常需要手工调整。

手动创建资源并保存脚本

手动创建资源并保存脚本

4. 推荐选项

因此,如果不手动创建 Azure 资源,则有以下几种选项。

4.1 Farmer

Farmer是一个.net的一个领域特定语言(DSL: domain-specific-language),用于快速生成Azure资源管理器(ARM)模板。Farmer是商业支持的,开源的,免费使用的。

4.2 Bicep (推荐)

Bicep 是微软官方发布的一种领域特定语言(DSL),用于以声明方式部署 Azure 资源。它旨在通过更简洁的语法、改进的类型安全性以及对模块化和代码重用的更好支持来大大简化创作体验。Bicep 是对 ARM 和 ARM 模板的透明抽象,这意味着可以在 ARM 模板中完成的任何操作都可以在 Bicep 中完成。

Bicep 代码被转译为标准 ARM 模板 JSON 文件,从而有效地将 ARM 模板视为中间语言 (IL)。

Bicep 案例 Bicep 案例

4.3 其他收费服务

迁移到自动化基础设施即代码(IaC)解决方案时,另一种选择是迁移到 PulumiTerraform 等付费提供商。如果你使用多个云,或者想要直接控制软件安装和基础架构,这些解决方案是理想的选择。

  • 这两种工具都很棒,并且提供免费版本
  • 付费版本为大型团队提供更多好处,提供管理大型的基础结构解决方案的能力
  • Terraform 使用 HashiCorp Configuration Language HCL
  • Pulumi 使用真实代码(C#、TypeScript、Go 和 Python)作为基础设施,而不是 JSON/YAML

Pulumi的Demo, 其中用C#定义Azure资源, 并从控制台运行”pulumi up”将资源部署到Azure

Pulumi Demo

Pulumi Demo