Cra*_*der 3 azure azure-virtual-machine azure-resource-group azure-template
我正在编写一个powershell脚本,以使用New-AzureRmResourceGroupDeployment cmdlet创建VM,如下所示。
New-AzureRmResourceGroupDeployment -Name VmDeployment `
-TemplateFile C:\template\template.json `
-TemplateParameterFile C:\template\parameters.json
Run Code Online (Sandbox Code Playgroud)
这用于创建VM。在中parameters.json,有些参数(例如virtualMachineName)networkInterfaceName等已进行了硬编码。
现在,我正在尝试使这些脚本自动化,即,当满足某些条件时,它们可以通过工具自行运行。
我的要求是,无论何时运行此脚本,都必须增加VMName中的数字。假设VM Name现在是VMName1,它必须是VMName2脚本下次运行时的时间。VMName3下次运行脚本时类似。由于virtualMachineName参数是硬编码的,所以现在不会发生这种情况。无论如何,我可以virtualMachineName在脚本本身中将其作为参数传递,而不是从json文件中获取。
任何指导都将受到高度赞赏。谢谢!
您绝对可以做到这一点,幸运的是,也有几种方法。
传递内联参数。它说,在用于模板的Azure PowerShell文档中,可以将内联参数与本地参数文件一起使用,并且内联参数优先。相关段落:
您可以在同一部署操作中使用内联参数和本地参数文件。例如,您可以在本地参数文件中指定一些值,并在部署期间内联添加其他值。如果在本地参数文件和内联中都为参数提供值,则内联值优先。
这很有价值,因为它为您提供了对VM Name参数的显式控制,但是由调用者(在本例中为您)传递内联参数。请注意,这仅适用于本地参数文件,不适用于远程文件(即-TemplateParameterFile和-TemplateParameterUri)。结果命令如下所示:
New-AzureRmResoruceGroupDeployment -Name VmDeployment `
-TemplateFile C:\template\template.json `
-TemplateParameterFile C:\template\parameters.json `
-virtualMachineName VMName42
Run Code Online (Sandbox Code Playgroud)修改原始parameters.json。您可以编写一些PowerShell / Python / Favorite-scripting-language来解析paramters.json,找到VM Name参数,找到整数后缀,对其进行递增,然后用新版本覆盖文件。这样的好处是不必记住传递内联参数,并且您不必在任何地方跟踪版本号,因为它已经存储在parameters.json中。这有一个主要缺点:它修改了原始JSON,这很危险。
复制parameters.json并修改临时副本。您可以编写脚本将parameter.json复制到另一个临时JSON文件,然后在复制期间像选项2中那样增加VM Name参数。将此临时文件传递给New-AzureRmResourceGroupDeployment。这样的好处是无需修改原始的parameters.json文件,但需要您在某处跟踪版本号(例如,另一个本地文件,命令行参数,环境变量等)。
为了简单起见,我建议使用选项1。它已经可以直接使用,不需要任何外部脚本。
| 归档时间: |
|
| 查看次数: |
3188 次 |
| 最近记录: |