【问题标题】:Passing parameters to Azure ARM templates将参数传递给 Azure ARM 模板
【发布时间】:2017-11-25 19:08:21
【问题描述】:

我有一个用于部署到采用此参数的资源组的模板:

"envPrefixName": {
  "type": "string",
  "metadata": {
    "description": "Prefix for the environment (2-5 characters)"
  },
  "defaultValue": "cust1",
  "minLength": 2,
  "maxLength": 5
},

我想让这个参数成为一个值,当像这样调用 cdmlet 时可以覆盖它:

    $AzureParams = @{ 
        ResourceGroupName = $ResourceGroup
        TemplateUri = $TemplateUri
        TemplateParameterUri = $TemplateParamUri 
        Mode = "Complete"
        envPrefixName = "sunlb" #Override default parameter value
        Force = $true
    }

    New-AzureRmResourceGroupDeployment @AzureParams

我已经尝试过这种方法,但解决方案继续尝试使用模板中设置的值,而不是在我的调用中作为参数传递的值。

编辑:TemplateParameterUri 文件可能导致和问题?

【问题讨论】:

    标签: windows powershell azure azure-resource-manager arm-template


    【解决方案1】:

    如果您提供TemplateParameterUri,它将使用参数文件来部署模板(并从文件中获取值),而您的envPrefixName 将“丢失”,因为它不会评估模板中的参数。

    删除TemplateParameterUri,它将按您的预期工作(但在这种情况下您必须提供所有参数,除非它们具有默认值)

    【讨论】:

    • 好吧,我想这可能是原因。这是一个问题,如果您想通过参数文件提供一些棒参数,但有些事情需要更加动态。这是一个不合理的用例吗?
    • 在模板中提供默认值,而不是在参数文件中(你甚至可以这样做)。另一种选择 - 在部署之前使用 powershell 编辑参数文件
    • 只是为了让你开始:here is the code 我用来修改参数文件。其中environmentReference 是您正在修改的参数的名称
    • 哦,好吧,所以不是使用-TemplateUri,而是拉入参数文件,修改它以包含您要设置的动态值,然后在New-AzureRMResourceGroupDeployment中使用它
    • 差不多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多