通过门户将生产槽与 Azure 应用服务的暂存槽交换时,您会收到一点警告,以防槽之间的配置不同。
当我从命令行交换时(例如在 bash 中使用 az ),我想得到相同的警告,这可能吗?如果可以,该怎么做?
通过门户将生产槽与 Azure 应用服务的暂存槽交换时,您会收到一点警告,以防槽之间的配置不同。
当我从命令行交换时(例如在 bash 中使用 az ),我想得到相同的警告,这可能吗?如果可以,该怎么做?
在使用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
使用 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}
将被替换,因此无需手动执行。<>
无论如何都应该提供其他参数。
最后,我对 az cli 进行了扩展,以比较和区分配置。毕竟做起来不是很困难,同时我可以稍微扩展它的功能,并可以在不同的 Web 应用程序之间区分配置,例如,当在多个区域部署相同的服务时很有用。
(这个扩展目前在任何地方都没有公开可用,但如果有兴趣可能会)