在主二头肌模板中将 Azure 流量管理器端点添加为子资源
Add Azure Traffic Manager endpoints in main bicep template as child resource
我正在尝试通过我在 main.bicep
文件中调用的 Network/trafficManagerProfiles.bicep
模块添加新的流量管理器配置文件。
这很好用。
main.bicep
文件正在使用它们自己的小模块创建多个函数应用程序,其调用方式与此类似
module functionAppModule 'Web/functions.bicep' = {
dependsOn: [
appServicePlanModule
webApiStorageAccount
]
name: 'functionAppModule'
params: {
environmentName: environmentName
systemName: systemName
azureRegion: azureRegion
appServicePlanId: appServicePlanModule.outputs.id
}
}
现在我正在尝试将我的 Web 应用程序 (Azure Functions) 的必要端点添加到流量管理器配置文件,这也可以通过 using the endpoints
property。
但是,这意味着我需要向该文件添加一个参数,以接受包含有关我的应用程序服务的所有信息的对象数组,否则我需要在此处解析它们(通过使用 existing
关键字)。这听起来不像是实现它的方式,因为所有这些资源都已经 available/referenced 在 main.bicep
文件中。
流量管理器配置文件模块现在如下所示:
param systemName string
@allowed([
'dev'
'test'
'acc'
'prod'
])
param environmentName string
param relativeLiveEndpoint string = '/api/Live'
var trafficManagerProfileName = '${systemName}${environmentName}'
resource trafficManagerProfile 'Microsoft.Network/trafficmanagerprofiles@2018-08-01' = {
name: trafficManagerProfileName
location: 'global'
properties: {
allowedEndpointRecordTypes: [
'DomainName'
]
dnsConfig: {
relativeName: trafficManagerProfileName
ttl: 60
}
profileStatus: 'Enabled'
trafficRoutingMethod: 'Performance'
monitorConfig: {
profileMonitorStatus: 'Online'
protocol: 'HTTPS'
port: 443
path: relativeLiveEndpoint
timeoutInSeconds: 10
intervalInSeconds: 30
toleratedNumberOfFailures: 3
}
endpoints: [
{
id: 'the resource id'
name: 'the resource name'
type: 'the resource type'
properties: {
endpointStatus: 'Enabled'
endpointMonitorStatus: 'Online'
targetResourceId: 'the resource id'
target: 'mysite.azurewebsites.net'
endpointLocation: 'West Europe'
weight: 1
priority: 1
}
}
// All other app services
]
}
}
根据 Stack Overflow 上的一些答案,endpoints
也可以通过 ARM 模板中的子资源创建(类似于 Microsoft.Network/trafficmanagerprofiles/endpoints
),但是,这似乎不是在 Bicep 中可用(或者只是在自动完成中不可用)。
我想在我的 main.bicep
文件中做类似这样的事情,因为这样我就可以引用我想添加的所有应用程序服务。
var trafficManagerProfileEndpoints 'Microsoft.Network/trafficmanagerprofiles/endpoints@2050-01-01` = {
name: '${trafficManagerProfile.Name}/endpoints'
endpoints: [
// All of my endpoints
]
}
与通过 Microsoft.Web/sites/config@2020-12-01
提供的应用服务配置设置相比,有些相似。
对此有什么想法吗?
我刚刚 运行 以闪电般的速度解决了你的问题,如果我不完全理解它,请原谅我,但看起来你需要再次将你的网络应用程序声明为资源,但要声明为现有资源。这使您可以从您的应用服务访问您需要的所有道具。
此博客介绍了如何在 Bicep 中使用现有资源:https://hexmaster.nl/posts/bicep-existing/
这可以通过 Bicep ARM 实现,但 Microsoft.Network/trafficManagerProfiles
api 没有可用于端点的类型,因此即使部署工作正常,它也会生成警告。
如果您定义流量管理器配置文件时没有 endpoints
属性:
resource trafficManager 'Microsoft.Network/trafficmanagerprofiles@2018-08-01' = {
name: '<name>'
location: 'global'
properties: {
profileStatus: 'Enabled'
trafficRoutingMethod: '<trafficRoutingMethod>'
dnsConfig: {
...
}
monitorConfig: {
...
}
}
}
然后您可以像这样添加端点:
// Azure endpoints: cloud service, app service, app service slots, public ip
resource trafficManagerAzureEndpoint 'Microsoft.Network/trafficManagerProfiles/azureEndpoints@2018-08-01' = {
name: '${trafficManagerName}/${name}'
properties: {
...
}
}
// External endpoint
resource trafficManagerExternalEndpoint 'Microsoft.Network/trafficManagerProfiles/externalEndpoints@2018-08-01' = {
name: '${trafficManagerName}/${name}'
properties: {
...
}
}
// Nested endpoints
resource trafficManagerNestedEndpoint 'Microsoft.Network/trafficManagerProfiles/nestedEndpoints@2018-08-01' = {
name: '${trafficManagerName}/${name}'
properties: {
...
}
}
我正在尝试通过我在 main.bicep
文件中调用的 Network/trafficManagerProfiles.bicep
模块添加新的流量管理器配置文件。
这很好用。
main.bicep
文件正在使用它们自己的小模块创建多个函数应用程序,其调用方式与此类似
module functionAppModule 'Web/functions.bicep' = {
dependsOn: [
appServicePlanModule
webApiStorageAccount
]
name: 'functionAppModule'
params: {
environmentName: environmentName
systemName: systemName
azureRegion: azureRegion
appServicePlanId: appServicePlanModule.outputs.id
}
}
现在我正在尝试将我的 Web 应用程序 (Azure Functions) 的必要端点添加到流量管理器配置文件,这也可以通过 using the endpoints
property。
但是,这意味着我需要向该文件添加一个参数,以接受包含有关我的应用程序服务的所有信息的对象数组,否则我需要在此处解析它们(通过使用 existing
关键字)。这听起来不像是实现它的方式,因为所有这些资源都已经 available/referenced 在 main.bicep
文件中。
流量管理器配置文件模块现在如下所示:
param systemName string
@allowed([
'dev'
'test'
'acc'
'prod'
])
param environmentName string
param relativeLiveEndpoint string = '/api/Live'
var trafficManagerProfileName = '${systemName}${environmentName}'
resource trafficManagerProfile 'Microsoft.Network/trafficmanagerprofiles@2018-08-01' = {
name: trafficManagerProfileName
location: 'global'
properties: {
allowedEndpointRecordTypes: [
'DomainName'
]
dnsConfig: {
relativeName: trafficManagerProfileName
ttl: 60
}
profileStatus: 'Enabled'
trafficRoutingMethod: 'Performance'
monitorConfig: {
profileMonitorStatus: 'Online'
protocol: 'HTTPS'
port: 443
path: relativeLiveEndpoint
timeoutInSeconds: 10
intervalInSeconds: 30
toleratedNumberOfFailures: 3
}
endpoints: [
{
id: 'the resource id'
name: 'the resource name'
type: 'the resource type'
properties: {
endpointStatus: 'Enabled'
endpointMonitorStatus: 'Online'
targetResourceId: 'the resource id'
target: 'mysite.azurewebsites.net'
endpointLocation: 'West Europe'
weight: 1
priority: 1
}
}
// All other app services
]
}
}
根据 Stack Overflow 上的一些答案,endpoints
也可以通过 ARM 模板中的子资源创建(类似于 Microsoft.Network/trafficmanagerprofiles/endpoints
),但是,这似乎不是在 Bicep 中可用(或者只是在自动完成中不可用)。
我想在我的 main.bicep
文件中做类似这样的事情,因为这样我就可以引用我想添加的所有应用程序服务。
var trafficManagerProfileEndpoints 'Microsoft.Network/trafficmanagerprofiles/endpoints@2050-01-01` = {
name: '${trafficManagerProfile.Name}/endpoints'
endpoints: [
// All of my endpoints
]
}
与通过 Microsoft.Web/sites/config@2020-12-01
提供的应用服务配置设置相比,有些相似。
对此有什么想法吗?
我刚刚 运行 以闪电般的速度解决了你的问题,如果我不完全理解它,请原谅我,但看起来你需要再次将你的网络应用程序声明为资源,但要声明为现有资源。这使您可以从您的应用服务访问您需要的所有道具。
此博客介绍了如何在 Bicep 中使用现有资源:https://hexmaster.nl/posts/bicep-existing/
这可以通过 Bicep ARM 实现,但 Microsoft.Network/trafficManagerProfiles
api 没有可用于端点的类型,因此即使部署工作正常,它也会生成警告。
如果您定义流量管理器配置文件时没有 endpoints
属性:
resource trafficManager 'Microsoft.Network/trafficmanagerprofiles@2018-08-01' = {
name: '<name>'
location: 'global'
properties: {
profileStatus: 'Enabled'
trafficRoutingMethod: '<trafficRoutingMethod>'
dnsConfig: {
...
}
monitorConfig: {
...
}
}
}
然后您可以像这样添加端点:
// Azure endpoints: cloud service, app service, app service slots, public ip
resource trafficManagerAzureEndpoint 'Microsoft.Network/trafficManagerProfiles/azureEndpoints@2018-08-01' = {
name: '${trafficManagerName}/${name}'
properties: {
...
}
}
// External endpoint
resource trafficManagerExternalEndpoint 'Microsoft.Network/trafficManagerProfiles/externalEndpoints@2018-08-01' = {
name: '${trafficManagerName}/${name}'
properties: {
...
}
}
// Nested endpoints
resource trafficManagerNestedEndpoint 'Microsoft.Network/trafficManagerProfiles/nestedEndpoints@2018-08-01' = {
name: '${trafficManagerName}/${name}'
properties: {
...
}
}