如何为azure web应用程序自动安装特定的站点扩展

uurity8g  于 2021-06-20  发布在  Kudu
关注(0)|答案(3)|浏览(216)

我希望在我的应用程序或代码中声明 .deployment 当我的代码被推送到scm kudu站点时,要安装或更新的特定站点扩展的文件。这可能吗?
我特别想要 Microsoft.ApplicationInsights.AzureWebSites 站点扩展将自动安装为我部署的所有站点的一部分,而无需手动浏览到scm站点并从库中安装它。

zzlelutf

zzlelutf1#

不能将站点扩展作为kudu git部署的一部分来安装,但可以作为arm模板的一部分来安装。你可以在这里找到一个完整的样品。
这与任何其他站点配置基本相同。e、 设置应用程序设置,应用程序服务层,打开日志记录,websockets。。。所有这些都在kudu部署之外,但是可以使用一个arm模板来实现,该模板包含所有您想要的站点状态。

92vpleto

92vpleto2#

另一种方法是制作一个webjob,它可以创建siteextension文件夹,然后将siteextension文件复制到该文件夹中。作为部署的一部分,您只需要包含webjob。
我们做了一些类似于stackify apm如何从一个站点扩展安装到azure web应用程序的事情。站点扩展创建一个webjob,该webjob实际上根据一些条件项更新站点扩展applicationhost转换。

gupuwyp2

gupuwyp23#

可以使用powershell完成,但有点不成熟(例如使用名为staging的staging slot):

Write-Host "Setting appsettings for Stackify on $AzureWebSite"

$hash = @{}
$hash['Stackify.ApiKey'] = "$licenceKey"
$hash['Stackify.Environment'] = "$environment"
$hash['Stackify.AppName'] = "$BaseWebAppName"

if ($loadCertificates -eq 'True')
{
    $hash['WEBSITE_LOAD_CERTIFICATES'] = "*"
}

Set-AzureWebsite -Name $AzureWebSite -Slot staging -AppSettings $hash

### Install Extension for Azure App###

Write-Host "Installing Stackify on $AzureWebSite"
$Kudu = "https://" + $AzureWebSite + "-staging.scm.azurewebsites.net/api/extensionfeed" # Here you can get a list for all Extensions available.
$InstallNRURI = "https://" + $AzureWebSite + "-staging.scm.azurewebsites.net/api/siteextensions" # Install API EndPoint

$slot = Get-AzureWebsite $AzureWebSite -Slot staging 
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $slot.PublishingUsername,$slot.PublishingPassword))) 
$invoke = Invoke-RestMethod -Uri $Kudu -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method get ###-InFile $filePath -ContentType "multipart/form-data" 
$id = ($invoke | ? {$_.id -match "stackify*"}).id  ### Searching for Stackify ID Extension

try {
    $InstallStackify = Invoke-RestMethod -Uri "$InstallNRURI/$id" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Put
    $Status = ($InstallStackify.provisioningState).ToString() + "|" + ($InstallStackify.installed_date_time).ToString()  ### Status
    Write-Output "Stackify Installation Status : $Status"
}
catch{$_}
Restart-AzureWebsite $AzureWebSite -Slot staging

相关问题