
在研究基础架构作为Azure资源管理器模板的代码替代品时,我偶然发现了Azure构建块(AZBB)工具。它没有被广泛采用,为什么后来这个你会看到博客。
因为我并不热衷于创作大型JSON文件(又名ARM模板)为IAC我打算把Azure的积木测试用一个简单的中心和分支VNET部署。ARM的模板我目前的首选方案 - - 后来我还可以使用AzureCLI脚本表现出同样的部署,所以你会看到不同之处。
仅供参考 - AZBB目前支持以下资源类型:
- 虚拟网络
- 虚拟机(包括负载平衡器)
- 虚拟机扩展
- 路由表
- 网络安全组
- 虚拟网络网关
- 虚拟网络连接
注:写这篇博客,我还测试了使用AZBB工具,跑进一个问题,这竟然是进一步测试阻断剂部署虚拟机天青之前。您可以查看开启/关闭AZBB项目问题在这里。
AZBB是什么?

Azure构建块
Azure构建块项目是一个命令行工具和一组Azure资源管理器模板,旨在简化Azure资源的部署。用户创建了一组简化的参数来指定Azure资源的设置,命令行工具将这些参数与最佳实践默认值合并,生成一组最终的参数文件,这些文件可以使用Azure资源管理器模板来部署。微软
![]()
Azure构建块-概述
基于上述描述——使用Azure构建块的一个关键优势是,通过将JSON参数文件与预定义的ARM模板合并,作为部署到Azure的一部分,可以节省时间。
这些预定义的ARM模板还应用了一些最佳实践的默认设置,如:
- 启用所有VM诊断
- 部署虚拟机的可用性组
- 管理所有VM磁盘
- 操作系统是最新的Windows Server 2016的图像
- 为每个VM创建公共IP
不幸的是,这些最佳实践默认是不容易被发现 - 所以发现应用什么违约(并在需要时对其进行覆盖)有一个看看参考维基每个支持资源如https://github.com/mspnp/template-building-blocks/wiki/Virtual-Machines
演示部署
在这个演示中,我部署了一个基本的HUB/SPOKE虚拟网络架构,该架构与Azure生产环境中常见,其中HUB VNET可能包含共享服务,如防火墙、域控制器、跳线盒和ExpressRoute网关。

Azure的积木-demo部署
这种部署方式,公开从这里预制AZBB参数文件来源:https://github.com/mspnp/template-building-blocks/tree/master/scenarios
步骤1 - 安装NPM / Node.js的
在本地运行AZBB工具,我们到我的本地机器我下载安装NPM /这样的NodeJS首先需要/运行从Windows 64客户端安装程序https://www.npmjs.com/get-npm。
然后我跑npm安装
从一个VSCode终端到设置Azure构建块,然后azbb
测试工具安装正确。
npm安装-g @mspnp/ aze -building-blocks
azbb
见此屏幕是一个好兆头

Azure构建块- Shell控制台
步骤2 -生成/复制一个.JSON参数文件
在将其部署到Azure之前,我们需要创建一个新的参数文件,或者使用一个预先准备好的参数文件。为了节省时间,我从GitHub中克隆了AZBB repo,并引用了一个与演示部署细节相匹配的预先制作的参数文件,比如VNETs、TAGS、PEERINGS、DNS服务器。
cd c:\temp git克隆https://github.com/mspnp/template-building-blocks
我们使用的参数文件(下面)位于\ \多层\ vnet-complete.json template-building-blocks \场景
。如果您已经熟悉使用ARM模板,您将很快学会使用AZBB参数文件。
第3步 - 部署与Azure的积木
从我的VSCode终端,我验证到Azure,然后记下我的订阅ID,我很快就会需要它。
# AuthN到Azure az登录#备注订阅ID az帐号显示
接下来,我跑azbb
要启动演示部署的部署,请参考我们前面克隆的现有. json参数文件。
azbb -g “VNET-AZBB-RG” -s “您的订阅-ID” -l “你,湛蓝的区域” -p“C:\ TEMP \模板构建块\场景\多层\ vnet-complete.json” --deploy
azbb完成运行后,我可以从Azure门户>资源组>部署选项卡中看到部署任务已经成功。

Azure构建块——通过Azure门户的部署状态
azbb
开关你应该知道的:
- - g您要部署到的资源组是吗
- - s是你的订阅ID
- - l是你要部署到Azure的区域
- - p是否包含部署细节的参数文件(.JSON)
- 部署需要开始部署天青
还生成了3x部署人工制品,您可以将其用于重新部署/故障排除/文档:

Azure的积木-Deployment文件输出
部署与AzCLI
为了演示JSON与azcli之间的区别,我在上面部署了完全相同的VNET体系结构,并将其转换为.azcli格式,这样您就可以看到结构上的区别。我可以使用VSCode的AzureCLI扩展直接从VSCode终端部署这个脚本https://github.com/microsoft/vscode-azurecli。
我发现azcli脚本在屏幕结构/布局方面非常紧凑,使得从同一个脚本部署多个Azure资源更加简单。Azcli对我来说也更容易学习/采用,因为它提供了内置的帮助片段和微软的wiki。
结论
Azure构建块显示出作为ARM模板的替代选择的潜力,但我对缺乏进一步的开发和使用该工具部署vm的一些持续问题感到失望。应用的最佳实践违约作为预定义的手臂模板是一个必要的一部分包含但我们都知道Azure的速度移动的速度比这些最佳实践违约更新模板,让你的情况下你需要覆盖这些默认值,事情可能会变得痛苦。
现在我与AzureCLI坚持为我IAC工具部署。
很想听听您对这个想法。
欢呼,杰西