2

通过门户将生产槽与 Azure 应用服务的暂存槽交换时,您会收到一点警告,以防槽之间的配置不同。

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

4

3 回答 3

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 交换插槽的更多信息,请参阅此页面。
  • 页面有关在 bash 中条件执行语句的详细信息
于 2018-04-04T15:30:48.873 回答
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}将被替换,因此无需手动执行。<>无论如何都应该提供其他参数。

于 2019-08-28T12:08:20.967 回答
0

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

(这个扩展目前在任何地方都没有公开可用,但如果有兴趣可能会)

于 2019-09-05T10:18:49.033 回答