Azure 基础 : 使用 template 简化部署

小说:易通贷新用户注册投100元1月标赚21元作者:戏邓更新时间:2019-01-17字数:98407

御林军,宫中侍卫,包括太子身边近臣,加上随身太监、宫女足足几百人,光大车就有十几辆,朱标换了一身简单衣物,由人护着来到近前。

啥浏览器好

等小舞关好门,唐三才从床上重新坐起来,两人对视一眼,小舞有些惊慌地低下头,唐三走到她身边,揉揉她的头,“我已经没事了,我去找老师。”
叶扬微微皱了皱眉头,轻哼一声,突然闪身来到凯瑟琳的身后,伸手抓住她的手臂,脸上的表情也是变得阴冷起来,冷声说道:“不要试图去威胁我,我会杀了你的。”

众人对这种话题最有兴趣,立刻你一言我一语地说了起来,贺延嗣倒没有干涉他们,只要他们不说汉语,不暴露自己身份,但说无妨。

笔者在前文中介绍了如何使用 PowerShell 脚本在 Azure 上创建虚拟主机。正如你所看到的,整个创建过程还是有点繁琐的,因为我们需要使用 PowerShell 脚本创建并关联所有相关的组件。其实 Azure 为运维人员提供了效率更高的操作方式:模板。我们可以通过声明式的语法来创建模板,然后通过模板来简化部署操作。
Azure 提供了强大的模板功能,不仅支持用户创建模板,还可以从当前的配置中导出模板。本文暂不关注创建模板的细节,只是把前文脚本创建的资源中导出为模板,并通过导出的模板创建新的资源。

从现有的资源导出模板

MS 建议我们尽量把同一个项目中的资源放置在同一个 resource manager 中管理,所以前文中我们在常见虚拟主机的同时创建了一个新的名为 vmpool 的 resource manager:

所有创建的资源都属于这个 resource manager。接下来我们就把这个 resource manager 中的所有资源都导出到模板中。如下图所示,先选择 "Automation script",然后点 "Download" 就可以了:

打开下载到的压缩包,里面的文件如下:

Azure 默认支持通过 PowerShell, shell, ruby 和 C# 部署模板,并提供了相应的脚本文件。也就是说我们只需要执行下载到的 PowerShell 脚本就可以部署一个和 vmpool 一模一样的 resource group 了!

接下来我们使用 powershell 脚本进行演示,简单起见我们只保留 deploy.ps1 和 template.json, 其它文件都删除掉。

修改模板中默认的名称

如果我们使用同一个订阅号进行部署,需要修改一下模板文件中 stroage account 的名称,不然的话会和已经存在的资源名称发生冲突。这里我们在 template.json 文件中默认的 stroage account 名称前面添加 "check" 字样:

依赖问题

笔者在测试的过程中碰到了一个很奇怪的依赖错误:

提示出现了循环引用,按照提示找到 template.json 文件中对应的行。查看之后感觉模板文件应该是正确的,按理说不应该有这样的错误提示。但是尝试了好几次都是相同的错误,索性删除提示出错的行:

把红框中的行删除,不要忘记删除前面的一个逗号。然后重试,错误消失。按理说新建的 networkinterfaces 和虚机有依赖关系是没有问题的,但是却出问题了,估计是个 bug。

执行命令进行部署

在执行 PowerShell 脚本进行部署前,我们还需要确定几个参数。首先是你的订阅号的 ID,这个参数决定你的资源被部署在哪个订阅号的下面。还有就是新的 resource group 的名称和位置。最后需要给本次的部署起个名字:

-subscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
-resourceGroupName "checkRG"
-resourceGroupLocation "Korea Central"
-deploymentName "testdeployment"

如果不在命令行中指定这些参数就需要在执行过程中和用户交互。我们希望做到自动化的部署过程,所以应该事先准备好这些参数,从而避免执行过程中的交互操作。因此最后我们要执行的部署命令为:

./deploy.ps1 -subscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" `
-resourceGroupName "checkRG" `
-resourceGroupLocation "Korea Central" `
-deploymentName "testdeployment"

执行上面的命令,我们会得到一个名为 checkRG 的 resource group,其内容和母版 vmpool 几乎是一样的(storage account 的名称不一样):

访问权限问题

在 azure 上执行操作需要用户先进行登录,那么在 PowerShell 脚本中该如何做呢(需要避免执行脚本的过程中与用户交互)?
笔者在《Azure 基础:用 PowerShell 自动登录》一文中有详细的介绍,有兴趣的朋友可以参考。

总结

本文通过一个简单的 demo 演示了如何通过 PowerShell 和模板在 azure 上部署资源。与单纯的使用 PowerShell 脚本来创建所有的资源相比,使用模板可以简化整个部署的过程。并且模板使用的是 json 格式,与具体的编程语言无关。你可以使用任何 Azure 支持的语言来部署模板中声明的资源。

编辑:北杜安文

发布:2019-01-17 12:59:49

当前文章:http://www.leetaemin.cn/list/wo015eaeqo.html

淘宝内部优惠券群代理 游戏王手机打码app 2018真实网赚项目 2018年最最赚钱的7个行业 2018最靠谱兼职app 拆分盘开发多少钱 打字接单的单源哪儿有 藁城招聘兼职

50673 12998 96215 81218 60696 1806066388 96753 56277

我要说两句: (0人参与)

发布