Azure SQL Server CICD Bicep и Key Vault

Я создал конвейер 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
    }]

Есть ли что-то очевидное, что это неправильно?

То, как вы передаете параметры команде az cli, кажется неправильным: learn.microsoft.com/en-us/cli/azure/deployment/…

Thomas 19.11.2022 19:27

Можете ли вы уточнить, пожалуйста? Если я возьму пользователя sql и pwd и жестко закодирую их в бицепсе, функциональность будет в порядке.

Raymondo 19.11.2022 20:53

Вам нужно указать имена параметров для встроенных параметров: sqlAdminUserName = "$(sql-admin-username)" sqlAdminPassword = "$(sql-admin-password)"

Thomas 19.11.2022 21:14

Пожалуйста, напишите как ответ, большое спасибо

Raymondo 20.11.2022 00:12
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
4
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Глядя на ваш файл yaml, вы видите, что неправильный способ передачи встроенных параметров (см. документацию), вам также необходимо указать имена параметров:

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

Другие вопросы по теме

Похожие вопросы

Management API перестает сообщать данные после почти 4 часов выполнения
Invoke-RestMethod: неавторизованный клиент для получения токена аутентификации
Как создать правила безопасности с несколькими протоколами с помощью Terraform в Azure?
Развертывание функции Azure для одного скрипта Python и процесс установки файла requirements.txt в функциях Azure.
Сохраните pandas в фрейме данных API искры в новую таблицу в лазурных блоках данных
Фабрика данных Azure — повторите попытку для действия копирования вставки (AzureSQL DB)
Pyspark: динамически добавить одну строку в окончательный фрейм данных
Каков отраслевой стандарт метода дедупликации в потоках данных?
Как снова использовать вновь созданный столбец в преобразовании производного столбца в том же преобразовании производного столбца?
Можно ли запустить Node-Red в докере на виртуальной машине EFLOW (Azure IoT Edge на устройстве Windows)?