Is it possible to enable Always On for Azure websites through management/resource management APIs?

后端 未结 3 643
感情败类
感情败类 2021-01-04 09:23

I am writing some code for automatic deployment of Azure websites (including the creation of the website in Azure). I\'m using the Azure Management Libraries and Azure Resou

相关标签:
3条回答
  • 2021-01-04 09:25

    For those using the .Net API, it's

    var cfg = await websiteClient.Sites.GetSiteConfigAsync(site.ResourceGroup, site.Name, cancellationToken).ConfigureAwait(false);
    if (!cfg.AlwaysOn.GetValueOrDefault())
    {
        cfg.AlwaysOn = true;
        await websiteClient.Sites.UpdateSiteConfigAsync(site.ResourceGroup, site.Name, cfg, cancellationToken).ConfigureAwait(false);
    }
    
    0 讨论(0)
  • 2021-01-04 09:26

    Using updated ARM (Azure Resource Manager) Powershell, v1.0+

    Get-AzureRmResource: https://msdn.microsoft.com/en-us/library/mt652503.aspx

    Set-AzureRmResource: https://msdn.microsoft.com/en-us/library/mt652514.aspx

    # Variables - substitute your own values here
    $ResourceGroupName = 'My Azure RM Resource Group Name'
    $WebAppName = 'My Azure RM WebApp Name'
    $ClientAffinityEnabled = $false
    
    # Property object for nested, not exposed directly properties
    $WebAppPropertiesObject = @{"siteConfig" = @{"AlwaysOn" = $true}}
    
    # Variables
    $WebAppResourceType = 'microsoft.web/sites'
    
    # Get the resource from Azure (consider adding sanity checks, e.g. is $webAppResource -eq $null)
    $webAppResource = Get-AzureRmResource -ResourceType $WebAppResourceType -ResourceGroupName $ResourceGroupName -ResourceName $WebAppName
    
    # Set a directly exposed property, in this case whether client affinity is enabled
    $webAppResource.Properties.ClientAffinityEnabled = $ClientAffinityEnabled
    
    # Pass the resource object into the cmdlet that saves the changes to Azure
    $webAppResource | Set-AzureRmResource -PropertyObject $WebAppPropertiesObject -Force
    
    0 讨论(0)
  • 2021-01-04 09:28

    I believe I found the solution!

    Using the resource management API, I can set the AlwaysOn property through the siteConfig object. In powershell:

    Set-AzureResource -ApiVersion 2014-04-01 -PropertyObject @{"siteConfig" = @{"AlwaysOn" = $false}} -Name mywebsite -ResourceGroupName myrg -ResourceType Microsoft.Web/sites

    In the resource management API in .NET it would be similar to this.

    The resulting REST call, to https://management.azure.com/subscriptions/xxx/resourcegroups/yyy/providers/Microsoft.Web/sites/zzz?api-version=2014-04-01: { "location": "West Europe", "properties": { "siteConfig": { "AlwaysOn": true } }, "tags": {} }

    0 讨论(0)
提交回复
热议问题