Coder Perfect

In Bicep, retrieve a secret from the keyvault and use it to create a Synapse Workspace.

Problem

I’d like to accomplish the following with my biceps:

All of the resources were created utilizing modules.

module keyVault 'modules/keyVault.bicep' = {
  scope: resourceGroup
  name: 'keyVault'
  params: {
    keyVaultName: keyVaultName  
    location: location 
    tenantID: subscription().tenantId
  }
}
module  keyVaultSecret 'modules/keyVaultSecret.bicep' = {
  scope: resourceGroup
  name: 'keyVaultSecretSynapseSQLAdminPassword'
  params: {
    secretName: 'synapseSQLAdministratorLoginPassword'
    secretValue: synapseSqlAdministratorLoginPassword
    keyVaultName: keyVaultName
    keyVaultSecretName: '${keyVault.name}/synapseSQLAdministratorLoginPassword'
  }
}

module synapse 'modules/synapseWs.bicep' = {
  scope: resourceGroup
  name: 'synapse'
  params: {

    synapseWSName: synapseWSName
    synapseWSLocation: location
    defaultAccountUrl: storageAccount.outputs.accURL
    synapseSqlAdministratorLogin:synapseSqlAdministratorLogin
    synapseSqlAdministratorLoginPassword: keyVault.getSecret('keyVaultSecretSynapseSQLAdminPassword')
    managedResourceGroupName: '${environmentName}-cargo-${applicationName}-synapsemanaged-rg'
    sqlPoolName: sqlPoolName
    synapsePrivateLinkHubName: synapsePrivateLinkHubName
    synapsePrivateLinkHubLocation: location
  }
}

In the line, the getSecret function is invoked.

synapseSqlAdministratorLoginPassword: keyVault.getSecret('keyVaultSecretSynapseSQLAdminPassword')

“The type “module” does not contain function “getSecret,” says the error. This function appears to be limited to resources. How could I go about doing this differently?

Thanks

Asked by caroline101

Solution #1

The keyvault must be referenced as existing in the bicep template. You can’t use that function with a module reference. You must make a reference to the source.

https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/resource-declaration?tabs=azure-powershell#reference-existing-resources

Answered by Jonatan Karlsson

Post is based on https://stackoverflow.com/questions/69461223/retrieve-a-secret-from-keyvault-in-bicep-and-use-as-input-for-synapse-workspace