我如何检查构建以确保不会意外上传无效的VM大小?
背景:我最近意识到无意中将Azure WebRole实例VM大小配置为“昂贵”的大小是多么容易。 Azure上的选项。
冒着出现非常愚蠢的风险,对于那些感兴趣的人,我就是这样做的...我正在Visual Studio中探索我的WebRole的设置,我必须更改默认的单一'特' (AO)VM大小为多个' ExtraLarge' (A4)在下一次部署时,导致我的使用量每天跳到很多美元,很快就耗尽了Azure信用...... Doh !!
它让我思考如何对构建进行检查以确保不会意外上传无效的VM大小?
答案 0 :(得分:0)
在考虑了各种powershell和azure api方法后,我决定最快最简单的方法是在Cloud Service项目(具有.csdef文件的项目)上添加预构建事件,如下所示......
for /F "tokens=5 delims=<>= " %%n in ('findstr "vmsize=" $(ProjectDir)ServiceDefinition.csdef') do (if "ExtraSmall"==%%n (exit 0) else (exit 1))
那就是它!
对于那些想知道它如何工作的人......这个预构建事件是一个命令行/批处理文件命令,可以直接放在项目的预构建事件中,在一行上。它会打开ServiceDefinition.csdef
文件并找到包含文字&#39; vmsize=
&#39;的行。这将返回以下行...
<WebRole name="WCFServiceWebRole1" vmsize="ExtraSmall">
然后,使用以下字符作为分隔符(&lt;,&gt;,=,{space}),它从该行获取第5个标记,在这种情况下给我们...
"ExtraSmall"
...然后将该值与文字字符串&#34; ExtraSmall&#34;进行比较,如果匹配则返回errorlevel 0,否则返回errorlevel 1。返回errorlevel 1使构建失败并停止任何后续的包和部署,导致在Azure中部署错误的VM大小。