zoukankan      html  css  js  c++  java
  • Azure 基础 : 使用 template 简化部署

    笔者在前文中介绍了如何使用 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 支持的语言来部署模板中声明的资源。

  • 相关阅读:
    多态
    163VIP邮箱哪个好?为什么要使用邮箱客户端?
    163邮箱的格式什么样的?常见的电子邮箱品牌有哪些?
    申请企业邮箱需要准备什么材料?外贸邮箱怎么注册?
    《10秒挑战》h5游戏案例分析
    H5反应类爆款游戏分享
    企业邮箱多少钱,哪家企业邮箱更具性价比?
    注册申请企业邮箱,哪家最优惠 #万元礼包来袭#
    购买一个163VIP邮箱,3位超短靓号更惊喜~
    小程序对H5游戏的技术分析
  • 原文地址:https://www.cnblogs.com/sparkdev/p/7762967.html
Copyright © 2011-2022 走看看