一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第26天,点击查看活动详情。
前面有篇文章讲到了基础设施及代码(Iac),国外三大云厂商AWS、Azure、GCP早已在自家的产品中支持了通过代码创建资源实例,这篇文章带大家认识Azure 的 ARM Template。
Azure Resource Manager
根据Azure官网介绍,其资源实例创建的方式分为以下三种:
-
Power Shell
-
Portal
-
ARM Template Power Shell 方式通过使用的是CLI,Portal使用的门户上可视化页面,而ARM Template 使用的代码模板描述并定义资源,但这三种方式都只是对资源进行相关定义描述,真正完成资源的创建管理需要依靠的是Azure Resource Manager。
通过资源管理器,能主要提供三种能力:
- 部署应用资源
- 组织资源
- 控制对资源的访问权限
欲知详细请跳转访问Azure Resource Manager。
ARM Temeplate
既然有三种创建方式,为什么要单独选出来谈ARM方式呢,那首先我们先看看ARM是什么吧?
ARM Temeplate是一种基础设施即代码的方式,通过这样的方式,您可以定义您需要部署的基础设施,并且你不再需要在门户网站上点击创建虚拟机或编写脚本来部署一个存储账户,运用了ARM Template,模板便定义了资源,而Azure ARM管理层则负责执行创建基础设施。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"VMName": {
"value": "webapp01"
},
"VMAdmin": {
"value": "svr_admin"
},
"VMAdminPassword": {
"value": "N0t@Rea!P@ss0wrd"
},
"VMSize": {
"value": "Standard_D4_v4"
}
}
}
这种基础设施及代码的形式,它是一种声明式语法,即在编写创建资源的命令的情况下,通过声明表达要创建的资源。
那么和其它两种资源构建方式比较,它有以下明显的特点:
- 支持创建多个资源
- 支持创建多个资源类型
- 可设置部署的顺序
- 支持恢复失败的部署
- 完美支持版本控制
- 支持资源的迁移以及再部署
- 声明的代码可重复使用,并且是幂等的
扩展
Azure 最近已经引入了一种全新的基础架构,称为Azure Bicep 的代码语言,如果把ARM Template 比作是JavaScript,那么Bicep就是TypeScript,在语法上更加灵活,功能上更加强大。
此外,构建Azure资源不止以上提到的三种,还包括三方支持的Terraform。