如何删除之前通过 provisionAfterExtensions 包含的 "remembered" 扩展?

How to remove a "remembered" extension previously included via provisionAfterExtensions?

我正在研究解决方案 运行 Service Fabric 集群,使用 ARM 模板定义。

我做了一些实验,其中我使用 ARM 模板将扩展 KVVMExtension 包含到两个虚拟机规模集。这些旨在尽早从 keyvault 加载数据。作为该过程的一部分,我在我的 ServiceFabricNode-extensions 下的 provisionAfterExtensions 下添加了这些扩展(以确保在配置其他扩展之前从 keyvault 读取):

"virtualMachineProfile": {
      "extensionProfile": {
          "extensions": [
           {
              "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
              "properties": {
              "type": "ServiceFabricNode",
              "provisionAfterExtensions" : ["KVVMExtension"],
              (...)

现在我只是试图回滚这个实验,并删除所有提及 KKVM 扩展的内容,包括上面最后一行代码中显示的对它的引用,但构建一直失败并出现以下错误:

BadRequest: On resource 'nt1vm', extension 'ServiceFabricNodeVmExt_vmNodeType0Name' specifies 'KVVMExtension' in its provisionAfterExtensions property, but the extension 'KVVMExtension' will no longer exist. First, remove the extension 'ServiceFabricNodeVmExt_vmNodeType0Name' or remove 'KVVMExtension' from the provisionAfterExtensions property of 'ServiceFabricNodeVmExt_vmNodeType0Name'

我觉得这有点奇怪,因为现在所有对 KVVM 的引用都已删除;显然,Service Fabric 设置的某些部分“记住”了以前的依赖项,并且不会让我删除它。

我尝试用其他一些最小的更改更新 ARM 模板,只是为了 100% 确定它实际上被 Azure DevOps 构建管道拾取并注册为 changed运行它,但这没有任何区别。

我还尝试从 Azure 门户中删除 KVVM 扩展,但这恰恰被禁止,因为它在 provisionAfterExtensions 下指定用于另一个扩展。我不能在不删除整个 VM 规模集的情况下删除其他扩展,此时我不想这样做。

有没有其他方法可以消除扩展之间这种明显“记住”的依赖关系?

事实证明这个问题有一个简单的解决方案。

我曾尝试简单地从我的 ARM 模板中删除以下行,认为这也会删除两个扩展之间的依赖关系:

"provisionAfterExtensions" : ["KVVMExtension"],

相反,我需要做的是 更改 该行,使其保留,但明确提供了一个 empty 数组:

"provisionAfterExtensions" : [],

在我 运行 我的构建管道进行此更改后,问题消失了。