Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure WebApp-单个请求中有多个自定义域_Azure_Powershell_Arm Template_Azure Cli - Fatal编程技术网

Azure WebApp-单个请求中有多个自定义域

Azure WebApp-单个请求中有多个自定义域,azure,powershell,arm-template,azure-cli,Azure,Powershell,Arm Template,Azure Cli,我正在尝试将自定义域批量上载到Azure WebApps(特别是部署槽)。我目前使用Azure CLI进行循环,但它为CICD过程增加了15-20分钟 我也尝试过使用ARM模板,但它在批量上传过程中报告“冲突”。它需要一个条件或依赖于以前的主机名,这意味着它仍在逐个配置域 有人知道批量配置的方法吗 Powershell和Azure CLI #Set Host Names and SSL $WebApp_HostNames = Import-Csv "$(ConfigFiles_Pa

我正在尝试将自定义域批量上载到Azure WebApps(特别是部署槽)。我目前使用Azure CLI进行循环,但它为CICD过程增加了15-20分钟

我也尝试过使用ARM模板,但它在批量上传过程中报告“冲突”。它需要一个条件或依赖于以前的主机名,这意味着它仍在逐个配置域

有人知道批量配置的方法吗

Powershell和Azure CLI

#Set Host Names and SSL
  $WebApp_HostNames = Import-Csv "$(ConfigFiles_Path)\$WebApp-Hostnames.csv"
  if ($null -ne $WebApp_HostNames) {
    foreach ($HostName in $WebApp_HostNames) {
      az webapp config hostname add --hostname $HostName.Name --resource-group "$(ResourceGroup)" --webapp-name "$WebApp" --slot "$WebApp$(WebApp_Slot_Suffix)"
      az webapp config ssl bind --certificate-thumbprint $HostName.Thumbprint --ssl-type SNI --resource-group "$(ResourceGroup)" --name "$WebApp"  --slot "$WebApp$(WebApp_Slot_Suffix)"
    }
  }
编辑:明白了!将写出过程并在此处提供答案,以供将来参考

TL;DR

我在这里包含了整个Powershell脚本,包括获取您的身份验证令牌和推送json配置。没有其他需要批量上传的内容

希望这有帮助

# Get auth token from existing Context
$currentAzureContext = Get-AzContext
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient($azProfile)
$token = $profileClient.AcquireAccessToken($currentAzureContext.Tenant.TenantId)

# Authorisation Header
$authHeader = @{
 'Content-Type'  = 'application/json'
 'Authorization' = 'Bearer ' + ($token.AccessToken)
}

# Request URL
$url = "https://management.azure.com/subscriptions/{SubscriptionID}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Web/sites/{WebAppName}/slots/{WebAppSlotName}?api-version=2018-11-01"

# JSON body
$body = '
{
    "id":"/subscriptions/{SubscriptionID}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Web/sites/{WebAppName}/slots/{WebAppSlotName}",
    "kind":"app",
    "location":"Australia East",
    "name":"{WebAppName} or {WebAppSlotName}",
    "type":"Microsoft.Web/sites/slots", or "Microsoft.Web/sites",
    "properties":{
        "hostNameSslStates":[
            {
                "name":"sub1.domain.com",
                "sslState":"SniEnabled",
                "thumbprint":"IUAHSIUHASD78ASDIUABFKASF79ASUASD8ASFHOANKSL",
                "toUpdate":true,
                "hostType":"Standard"
            
            },
            {
                "name":"sub2.domain.com",
                "sslState":"SniEnabled",
                "thumbprint":"FHISGF8A7SFG9SUGBSA7G9ASHIAOSHDF08ASHDF08AS",
                "toUpdate":true,
                "hostType":"Standard"
            
            }
        ],
        "hostNames":[
            "sub1.domain.com",
            "sub2.domain.com",
            "{Default WebApp Domain}"
        ]
    }
}
'

# Push to Azure
Invoke-RestMethod -Uri $url -Body $body -Method PUT -Headers $authHeader
方法

最后,我按下F12键,在browser developer tools的Networking选项卡中捕获流量

在门户中单击“添加绑定”时,会有一个
PUT
请求,该请求具有复制所需的负载。我发现该请求包含所有用于批量上传的自定义域和SSL绑定,而不仅仅是更改。这里唯一的技巧是为所有域将
toUpdate
属性设置为
true
。我去掉了所有
null
notConfigured
值以保持整洁


我的下一步工作是获取我的主机名和证书指纹,并在将更改推送到Azure之前动态构建主体。

我们也有同样的体验。期待你的回答!