Azure SQL Server CICD Bicep 和 Key Vault

标签 azure azure-cli azure-pipelines-yaml azure-bicep

我已经构建了一个 CICD 管道来部署 Azure SQL Server 和数据库,此过程的一部分是从 Key Vault 中的 secret 中获取用户名和密码。 YAML 中的 Key Vault 任务可以正常工作并且可以访问 Vault,但是当它调用 Azure CLI 任务来执行 Bicep 时,它会失败并出现以下错误:

ERROR: Unable to parse parameter: **

我的代码:

   steps:
- task: AzureKeyVault@2
  displayName: 'Download Key Vault Secrets'
  inputs:
    connectedServiceName: ${{ parameters.AzureResourceManagerConnection }}
    keyVaultName: ${{ parameters.keyVaultName }}
    secretsFilter: '*' 

- task: AzureCLI@2
  displayName: '${{ parameters.deploymentType }}: ${{ parameters.targetEnvironment }} ${{ parameters.product }}'
  inputs:
    azureSubscription: ${{ parameters.AzureResourceManagerConnection }}
    scriptType: 'ps'
    scriptLocation: 'inlineScript'
    inlineScript: |
      $tags = "${{ parameters.releaseFolder }}/${{ parameters.targetEnvironment }}/tags.json"
      $products = "${{ parameters.releaseFolder }}/${{ parameters.targetEnvironment }}/products.json"
      $productDeploymentFile = "${{ parameters.releaseFolder }}/SQLServer.bicep"
      az --version
      az deployment group ${{ parameters.deploymentType }} --name ${{ parameters.targetEnvironment }}-${{ parameters.product }}-products-deployment --resource-group ${{ parameters.resourceGroup }} --template-file $productDeploymentFile --parameters $tags $products "$(sql-admin-username)" "$(sql-admin-password)" --mode ${{ parameters.deploymentMode }}

还有二头肌文件:

param tags object
    param sqlServers array
    param sqlDatbases array
    
    param sqlAdminUserName string
    @secure()
    param sqlAdminPassword string
    
    
    resource sqlServer 'Microsoft.Sql/servers@2021-08-01-preview' = [for sql in sqlServers: {
      name: sql.Name
      location: sql.location
      properties: {
        administratorLogin: sqlAdminUserName
        administratorLoginPassword: sqlAdminPassword
        administrators: {
          azureADOnlyAuthentication: false
          administratorType: sql.administratorType
          principalType: sql.principalType
          login: sql.login
          sid: sql.sid
          tenantId: sql.tenantId
        }
      }
      tags: tags
    }]

有什么明显不正确的地方吗?

最佳答案

查看您的 yaml 文件,您传递内联参数的方式不正确(请参阅 documentation ),您还需要指定参数名称:

az deployment group `
...
  --parameters `
  sqlAdminUserName="$(sql-admin-username)" `
  sqlAdminPassword="$(sql-admin-password)" `
...

关于Azure SQL Server CICD Bicep 和 Key Vault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74499075/

相关文章:

Azure 函数速度很慢

c# - 不同网络中两个应用程序之间的命令

powershell - Azure管道:基于OS的条件环境变量

Azure 管道条件

azure - 这个命令有什么作用? "az .\-u"

Azure DevOps : how configure my pipeline script to trigger another pipeline with different repo?

azure - 无法通过 FTP 访问 Azure Web 应用程序

Azure函数主机无法解析依赖项

python - Azure Function - 触发包含 Azure CLI 命令的 Python 脚本

azure - 如何运行需要超过 20 分钟的 Azure Cloud Shell 脚本?有没有办法防止 Azure Cloud Shell 超时?