I'm trying to deploy a child module in bicep but I get not found error as its parent has not been deployed yet.
This is the parent bicep code:
@description('The name of the app service. full site name will be DT-xxx-Open')
param site_name string
var full_site_name = 'DT-${site_name}-Open'
@description('Resource location')
param location string = resourceGroup().location
resource app 'Microsoft.Web/sites@2021-02-01' = {
kind: 'app'
name: full_site_name
location: location
...
}
module site_config 'modules/appservice-config.bicep' = {
name: 'site_config'
params: {
resource_name: full_site_name
resource_location: location
}
}
this is my module bicep file:
@description('Resource name')
param resource_name string
(error happens at this line) resource site_name_resource 'Microsoft.Web/sites@2021-02-01' existing = {
name: resource_name
}
resource site_name_logs 'Microsoft.Web/sites/config@2021-02-01' = {
parent: site_name_resource
name: 'logs'
...
}
But the problem is I'm getting a not found error as its parent service deployment has not been completed yet and if I retry then it will work fine!
I wonder, is there any way to run this module after completing its parent deployment?
You would need to add a dependsOn
when invoking you module.
Bicep use implicit dependency So you can use the parent resource name as parameter for you module:
module site_config 'module.bicep' = {
name: 'site_config'
params: {
resource_name: app.name
...
}
}
This is equivalent to:
module site_config 'module.bicep' = {
name: 'site_config'
params: {
resource_name: full_site_name
}
dependsOn: [ app ]
}