azure - 无效的部署模板参数(Bicep/Yaml)

标签 azure azure-resource-manager azure-rm-template azure-bicep infrastructure-as-code

我有两个存储库,一个用于资源二头肌,另一个使用资源作为可重用性模块。 现在我已经创建了一个二头肌来部署一个sql服务器和一个数据库

// sqldb.bicep
param name string
param location string = resourceGroup().location
param sqlAdministratorLogin string
@secure()
param sqlAdministratorLoginPassword string
param sqldatabaseNames array
param skuName string
param srvPostFix string = 'ss'

var sqlserverName = '${name}-${srvPostFix}'

resource sqlServer 'Microsoft.Sql/servers@2021-11-01' = {
  name: sqlserverName
  location: location
  properties: {
    administratorLogin: sqlAdministratorLogin
    administratorLoginPassword: sqlAdministratorLoginPassword
    version: '12.0'
  }
}

resource sqlDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = [for item in sqldatabaseNames:{
  parent: sqlServer
  name: '${item}'
  location: location
  sku: {
    name: skuName
  }
  properties: {
    maxSizeBytes: 1073741824
  }
}]

我从部署一个 azure sql 数据库的另一个存储库调用此函数,下面是 main.bicep 和参数 json

keystore 已存在,我已添加 secret SqlAdminPassword

param rgLocation string = resourceGroup().location
param name string
param sqlAdministratorLogin string
param sqlSkuName string
param sqldatabaseNames array = [
  toLower('${name}-db')
]
param keyVaultName string
param keyVaultResourceGroup string

var dbModule = '${name}-DBModule'

resource keyVault 'Microsoft.KeyVault/vaults@2022-11-01' existing = {
  name: keyVaultName
  scope: resourceGroup(keyVaultResourceGroup)
}

module sqlDbModule 'br:myacr.azurecr.io/bicepmodules/sqldb.bicep:2023-03-17-12-15' = {
  name: dbModule
  params: {
    name: prefixRName
    location: rgLocation
    sqlAdministratorLogin: sqlAdministratorLogin
    sqlAdministratorLoginPassword: keyVault.getSecret('SqlAdminPassword')
    sqldatabaseNames: sqldatabaseNames
    skuName: sqlSkuName
  }
}

//parameter file

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "name": {
        "value": "my-web"
      },
      "sqlAdministratorLogin": {
        "value": "admin"
      },
      "sqlAdministratorLoginPassword": {
        "reference": {
          "keyVault": {
            "id": "/subscriptions/subid/resourceGroups/my-rg/providers/Microsoft.KeyVault/vaults/my-kv"
          },
          "secretName": "SqlAdminPassword"
        }
      },
      "sqlSkuName": {
        "value": "Basic"
      },
      "keyVaultName": {
        "value": "my-kv"
      },
      "keyVaultResourceGroup": {
        "value": "my-rg"
      }
    }
  }

现在我在通过 azure 管道部署它时遇到错误:

部署模板验证失败:'参数文件中的模板参数'sqlAdministratorLoginPassword'无效;它们不存在于原始模板中,因此无法在部署时提供。此模板唯一支持的参数是“name、sqlAdministratorLogin、sqlSkuName、sqldatabaseNames、keyVaultName、keyVaultResourceGroup”。

最佳答案

您的第二个模板的参数中没有 sqlAdministratorLoginPassword。您正在引用二头肌中 keystore 中的密码 secret 。因此,您应该能够从参数文件中删除 sqlAdministratorLoginPassword。

关于azure - 无效的部署模板参数(Bicep/Yaml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75771178/

相关文章:

azure - Databricks 包 com.databricks.spark.xml 存在编码问题

azure-resource-manager - 如何在 ARM 的嵌套部署中修改数组的特定成员?

azure - Microsoft.Web/sites/hostNameBindings 的 ARM 模板部署不断出现冲突错误

azure - hdfs dfs -setfacl 在 Azure Data Lake Store 上失败

mysql - Azure 流分析输出到 MySQL 数据库

c# - 如何将文件上传到blob容器?

azure - 没有使用 ARM 模板通过 Azure 容器注册表 (ACR) 创建 Azure AKS 群集的选项

azure - 使用 Bicep 设置 Azure 存储帐户装载路径

azure - 应用程序网关 ARM 模板 - 启用防火墙的参数

azure - 从 ARM 模板设置 Azure 应用程序配置中的值