Я создал конвейер CICD для развертывания Azure SQL Server и базы данных, и часть этого процесса заключается в получении имени пользователя и пароля из секретов в Key Vault. Задача Key Vault в YAML работает и может получить доступ к хранилищу, но когда она вызывает задачу 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
}]
Есть ли что-то очевидное, что это неправильно?
Можете ли вы уточнить, пожалуйста? Если я возьму пользователя sql и pwd и жестко закодирую их в бицепсе, функциональность будет в порядке.
Вам нужно указать имена параметров для встроенных параметров: sqlAdminUserName = "$(sql-admin-username)" sqlAdminPassword = "$(sql-admin-password)"
Пожалуйста, напишите как ответ, большое спасибо
Глядя на ваш файл yaml, вы видите, что неправильный способ передачи встроенных параметров (см. документацию), вам также необходимо указать имена параметров:
az deployment group `
...
--parameters `
sqlAdminUserName = "$(sql-admin-username)" `
sqlAdminPassword = "$(sql-admin-password)" `
...
То, как вы передаете параметры команде az cli, кажется неправильным: learn.microsoft.com/en-us/cli/azure/deployment/…