本来我精通terraform,但是客户偏偏选择了azure ARM

53 阅读2分钟

在基础设施编码领域,terraform的多云支持能力一直是一个很大的优势,而且在开源社区也一直是热门工具,甚至成了这一个领域的事实工业标准。

但是偏偏有不懂事的客户,强烈要求用云平台专属的基础设施编码工具,比如AWS有cloud formation,AZURE有自己的ARM。

那么为什么有人偏偏喜欢这种云平台的专属Iac工具呢?比如azure的ARM。 下面我们就一起对比一番。

Terraform

Terraform 是由 HashiCorp 开发的一种开源 IaC 工具,支持多种云平台(包括 Azure、AWS、Google Cloud 等)。Terraform 使用 HCL(HashiCorp Configuration Language)语言来定义基础设施,这使得它在多平台环境中特别有吸引力。

Azure ARM

Azure Resource Manager 是微软 Azure 平台的原生 IaC 工具,专门用于在 Azure 中管理资源。ARM 模板使用 JSON 格式来定义资源及其依赖关系。这种方法允许对 Azure 资源进行声明性管理和自动化部署。

支持的云平台

  • Azure ARM: 专门用于 Azure 云平台,仅支持 Azure 生态系统。
  • Terraform: 支持多云平台,包括 Azure、AWS、Google Cloud、Oracle Cloud、Kubernetes 等,使其更适合多云策略或混合云环境。

Azure ARM 优劣分析

优势:

  • 完全与 Azure 平台集成,支持 Azure 最新特性和服务。
  • 原生支持 Azure AD 和角色资源的访问控制。
  • 强大的文档和示例库,适合专注于 Azure 平台的用户。

劣势:

  • 仅支持 Azure,无法用于多云环境。
  • JSON 语法较为冗长,不如 HCL 简洁。
  • 状态管理相对较弱,没有 Terraform 那样的状态文件管理。

Terraform 优劣分析

优势:

  • 跨平台支持,适合多云策略。
  • HCL 语法简洁、直观,便于编写和维护。
  • 强大的社区支持和生态系统,包括大量的提供程序和模块。

劣势:

  • 新特性支持有时落后于云提供商。
  • 状态文件需要额外的管理;如果处理不当,可能导致配置不一致的问题。

Azure ARM 模板示例

图片.png

Terraform 配置示例

图片.png

分析之后,我们可以知道,客户喜欢用平台自带的Iac工具,是因为自带的工具会更好更快的支持最新的服务特性。如果客户的云平台都是单一的公有云,比如Azure,那么选择ARM是一个合理的做法。

RSIXV9DT.png