当通过门户网站为Azure应用服务的暂存插槽交换生产槽时,如果插槽之间的配置不同,则会收到一些警告。
当我从命令行交换时(例如在bash中使用az),我想得到相同的警告,这是可能的,如果可以的话怎么做?
答案 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
答案 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应用程序之间进行差异化配置,例如,当同一服务部署在多个区域中时很有用。
(此扩展名目前无法在任何地方公开使用,但如果有兴趣的话也可以)