首页 文章

如何通过PowerShell添加Azure App Service扩展?

提问于
浏览
3

我们的持续集成环境会在每次部署时自动部署新的Azure App Service . 所以这意味着它会删除旧的临时插槽并在交换到 生产环境 之前重新创建它 . 因此,我们重新开始,并部署了所有新的配置和服务 .

这一直很好,直到现在我们还需要安装一个有用的站点扩展 . 当我们手动安装此扩展时,当我们再次进行全新部署时,它将会丢失 .

如何通过PowerShell将站点扩展安装到Azure应用服务?我的CI流程可以轻松完成 .

1 回答

  • 2

    你可以查看example .

    ### Install NewRelic Extension for Azure App###
    write-output "*** Installing New Relic on PROD Site"
    $WebSite = "your site name"
    $Kudu = "https://" + $WebSite + ".scm.azurewebsites.net/api/extensionfeed" # Here you can get a list for all Extensions available.
    $InstallNRURI = "https://" + $WebSite + ".scm.azurewebsites.net/api/siteextensions" # Install API EndPoint
    
    $username = "`$UserName"
    $password = "hxWN9sjrqt9haA3NpG1kTK0QBui2ph7cEGQlcMQhYTiWqDWL9yf1aXGIJHTD"
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
    
    $invoke = Invoke-RestMethod -Uri $Kudu -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method get ###-InFile $filePath -ContentType "multipart/form-data"
    
    $id = ($invoke | ? {$_.id -match "NewRelic*"}).id  ### Searching for NewRelic ID Extension
    
    try {
        $InstallNewRelic = Invoke-RestMethod -Uri "$InstallNRURI/$id" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Put
        $Status = ($InstallNewRelic.provisioningState).ToString() + "|" + ($InstallNewRelic.installed_date_time).ToString()  ### Status
        Write-Output "NewRelic Installation Status : $Status"
        Restart-AzureRmWebApp -ResourceGroupName $ResourceGroupName -Name $WebSite -Verbose ### Restarting the WebApp
    }
    catch{$_}
    

相关问题