azure 二头肌中的可选参数

4si2a6ki  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(141)

在二头肌我有一个主要的二头肌呼吁
1.部署应用程序服务的模块
1.部署托管身份的模块
应用程序服务模块如下所示,它使用用户分配的托管ID的输出,并在应用程序服务的标识中分配:
主二头肌

module userAssignedManagedIdModule 'uam.bicep' = {
  name: uamanagedid
  params: {
    location: rgLocation
    name: name
  }
}

module asModule 'appservicetemplate.bicep' = {
  name: 'name'
  params: {    
    appServiceName: asName
    userassignedmanagedid: userAssignedManagedIdModule.outputs.managedIdentityId 
  }
  dependsOn: [ userAssignedMID ]
}

应用服务模板

param UserAssignedIdentity string

resource appService 'Microsoft.Web/sites@2021-02-01' = {
  name: appServiceName
  location: rgLocation
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${UserAssignedIdentity}':{}
    }
  }
  properties:{
    serverFarmId: appServicePlanId
    siteConfig:{
      alwaysOn: true
      ftpsState: 'Disabled'
    }
    httpsOnly: true    
  }
}

用于管理身份的二头肌-用户分配

param name string
param location string = resourceGroup().location

resource UserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
  name: name
  location: location
}

output managedIdentityId string = UserAssignedIdentity.id

如果我需要部署一个没有托管ID的应用服务,我想使用与模块相同的bicep,所以我不想让这个userassignedmanagedid成为一个强制参数。我如何实现它?

tf7tbtn2

tf7tbtn21#

可选参数使用默认值定义。
然后,您可以动态构建标识块:

param UserAssignedIdentity string = ''

resource appService 'Microsoft.Web/sites@2021-02-01' = {
  name: appServiceName
  location: rgLocation
  identity: empty(UserAssignedIdentity) ? {} : {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${UserAssignedIdentity}': {}
    }
  }
  properties: {
    serverFarmId: appServicePlanId
    siteConfig: {
      alwaysOn: true
      ftpsState: 'Disabled'
    }
    httpsOnly: true
  }
}

相关问题