从cli交换Azure App Service时如何获取交换配置预览?

时间:2018-04-04 14:27:42

标签: azure azure-web-sites azure-cloud-shell

当通过门户网站为Azure应用服务的暂存插槽交换生产槽时,如果插槽之间的配置不同,则会收到一些警告。

当我从命令行交换时(例如在bash中使用az),我想得到相同的警告,这是可能的,如果可以的话怎么做?

3 个答案:

答案 0 :(得分:1)

在使用Azure CLI完成交换之前似乎没有任何方法可以获得确认。

如果您需要确认对话框,则需要单独编写脚本,例如:像这样

read -r -p "Are you sure? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
    az webapp deployment slot swap  -g MyResourceGroup -n MyUniqueApp --slot staging --target-slot production
fi

参考

  • 有关使用cli交换插槽的详细信息,请参阅this页面。
  • this页面,详细了解bash中有条件执行的语句

答案 1 :(得分:1)

使用Azure CLI和jq(首先安装)来做到这一点。这与Azure门户在进行预览时所做的调用相同。因此,我添加了Azure CLI任务,然后:

echo Phase One changes
az rest -m post -u https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/<your_rg>/providers/Microsoft.Web/sites/<your_webapp_name>/slots/<slot_name>/slotsdiffs?api-version=2016-08-01 --body {\"targetSlot\":\"production\"} | jq -r "[.value[].properties | select(.diffRule == \"SlotSettingsMissing\") | .description ] | join(\";\")" 

echo Phase Two changes
az rest -m post -u https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/<your_rg>/providers/Microsoft.Web/sites/<your_webapp_name>/slots/<slot_name>/slotsdiffs?api-version=2016-08-01 --body {\"targetSlot\":\"production\"} | jq -r "[.value[].properties | select(.diffRule != \"SlotSettingsMissing\") | .description ] | join(\";\")" 

请注意,{subscriptionId}将被替换,因此无需手动进行。 <>中的其他参数应始终提供。

答案 2 :(得分:0)

最后,我对az cli进行了扩展,以比较和比较配置。毕竟这不是很困难,同时我可以稍微扩展它的功能,并可以在不同的Web应用程序之间进行差异化配置,例如,当同一服务部署在多个区域中时很有用。

(此扩展名目前无法在任何地方公开使用,但如果有兴趣的话也可以)