Azure:如何使用 ARM 模板安装特定的现有站点扩展?
Azure: How to install a specific existing site extension using ARM template?
我有一个 Azure 应用服务。我想以编程方式安装站点扩展 ASP.NET Core Logging Integration。
到目前为止我所做的是:
- 通过 Azure 浏览器 GUI(开发工具 -> 扩展)手动安装站点扩展。
- 提取 ARM 模板(自动化 -> 导出模板)。
- Trim ARM 模板,因此它只包含站点和站点扩展。
- 通过 Azure 浏览器 GUI 删除站点扩展。
- 使用 CLI (
az deployment group create -f template.json...
) 安装 ARM 模板(到相同的应用程序服务)。
- 在 Azure 浏览器 GUI 中,验证站点扩展现已安装。
以上 有效 。 ARM 模板正确安装站点扩展。但是我不明白怎么会。整个模板如下所示:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"siteName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-01-15",
"name": "[parameters('siteName')]",
"location": "[parameters('location')]",
"kind": "app",
"properties": {}
},
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2021-01-15",
"name": "[concat(parameters('siteName'), '/Microsoft.AspNetCore.AzureAppServices.SiteExtension')]",
"location": "West Europe",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
]
}
]
}
据我所知,没有指定要安装哪个站点扩展。所以我不明白为什么我的 ARM 模板会这样做。
任何人都可以向我解释如何修改此模板以安装不同的站点扩展吗?
The above works. The ARM template correctly installs the site
extension. But I don't understand how.
你的答案在下面的区块中:
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2021-01-15",
"name": "[concat(parameters('siteName'), '/Microsoft.AspNetCore.AzureAppServices.SiteExtension')]",
"location": "West Europe",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
]
}
第二个块完成了这项工作,如下所示:
"name": "[concat(parameters('siteName'), '/Microsoft.AspNetCore.AzureAppServices.SiteExtension')]"
它由两部分组成,首先是 sitename
,即 webapp 名称,并添加您要安装的站点扩展,即 Microsoft.AspNetCore.AzureAppServices.SiteExtension
,这基本上是扩展的 ID,您可以从 Resource Graph Explorer(技术上是 webappname/siteextensionId),如下所示:
subscriptions>>resourcegroups>>appresourcegroup>>providers>>Microsoft.Web>>Sites>>yourwebappname>>siteextensions
如果您还想安装一些其他扩展,那么您可以在为一个应用程序手动安装后检查 id,如上图所示,并使用以下模板:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"siteName": {
"type": "string"
},
"location": {
"type": "string"
},
"siteextensionId": {
"type" : "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-01-15",
"name": "[parameters('siteName')]",
"location": "[parameters('location')]",
"kind": "app",
"properties": {}
},
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2021-01-15",
"name": "[concat(parameters('siteName'),'/',parameters('siteextensionId'))]",
"location": "West Europe",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
]
}
]
}
在我的例子中,我使用了一个扩展 .NET Retrace APM
,它的 ID Stackify.AzureWebApps
.
输出:
传送门:
我有一个 Azure 应用服务。我想以编程方式安装站点扩展 ASP.NET Core Logging Integration。
到目前为止我所做的是:
- 通过 Azure 浏览器 GUI(开发工具 -> 扩展)手动安装站点扩展。
- 提取 ARM 模板(自动化 -> 导出模板)。
- Trim ARM 模板,因此它只包含站点和站点扩展。
- 通过 Azure 浏览器 GUI 删除站点扩展。
- 使用 CLI (
az deployment group create -f template.json...
) 安装 ARM 模板(到相同的应用程序服务)。 - 在 Azure 浏览器 GUI 中,验证站点扩展现已安装。
以上 有效 。 ARM 模板正确安装站点扩展。但是我不明白怎么会。整个模板如下所示:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"siteName": {
"type": "string"
},
"location": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-01-15",
"name": "[parameters('siteName')]",
"location": "[parameters('location')]",
"kind": "app",
"properties": {}
},
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2021-01-15",
"name": "[concat(parameters('siteName'), '/Microsoft.AspNetCore.AzureAppServices.SiteExtension')]",
"location": "West Europe",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
]
}
]
}
据我所知,没有指定要安装哪个站点扩展。所以我不明白为什么我的 ARM 模板会这样做。
任何人都可以向我解释如何修改此模板以安装不同的站点扩展吗?
The above works. The ARM template correctly installs the site extension. But I don't understand how.
你的答案在下面的区块中:
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2021-01-15",
"name": "[concat(parameters('siteName'), '/Microsoft.AspNetCore.AzureAppServices.SiteExtension')]",
"location": "West Europe",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
]
}
第二个块完成了这项工作,如下所示:
"name": "[concat(parameters('siteName'), '/Microsoft.AspNetCore.AzureAppServices.SiteExtension')]"
它由两部分组成,首先是 sitename
,即 webapp 名称,并添加您要安装的站点扩展,即 Microsoft.AspNetCore.AzureAppServices.SiteExtension
,这基本上是扩展的 ID,您可以从 Resource Graph Explorer(技术上是 webappname/siteextensionId),如下所示:
subscriptions>>resourcegroups>>appresourcegroup>>providers>>Microsoft.Web>>Sites>>yourwebappname>>siteextensions
如果您还想安装一些其他扩展,那么您可以在为一个应用程序手动安装后检查 id,如上图所示,并使用以下模板:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"siteName": {
"type": "string"
},
"location": {
"type": "string"
},
"siteextensionId": {
"type" : "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-01-15",
"name": "[parameters('siteName')]",
"location": "[parameters('location')]",
"kind": "app",
"properties": {}
},
{
"type": "Microsoft.Web/sites/siteextensions",
"apiVersion": "2021-01-15",
"name": "[concat(parameters('siteName'),'/',parameters('siteextensionId'))]",
"location": "West Europe",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
]
}
]
}
在我的例子中,我使用了一个扩展 .NET Retrace APM
,它的 ID Stackify.AzureWebApps
.
输出:
传送门: