0

在完整的资源组部署期间,如果模板中未指定资源,则预期资源将被删除。

但是,在我的情况下(使用带有 CNAME 的 DNS 区域部署 RSG),如果通过 copy/copyIndex 迭代器指定 CNAME,则不会删除从数组参数投影后丢失的 CNAME。

我有一个基本模板可以重现这个问题。

  1. 将 CNAME 记录添加到参数文件。
  2. 部署模板(完成)并验证 CNAME 是否已创建。
  3. 从参数文件中删除 1 个或多个 CNAME 记录。
  4. 部署模板(完成)并观察已删除的 CNAME 资源没有被删除。

我找不到任何解释此行为警告的文档,所以我不确定这是错误还是预期行为?


编辑/跟进:

如果我采取“严厉”的方法对整个 DNS 区域进行核攻击,然后立即使用新模板重新部署它,这是否会导致 DNS 服务出现问题,假设重新部署没有问题并且此操作发生在在受影响资源的 TTL 下?

虽然这听起来很合理,但我的直觉告诉我,这将永远是一个无法保证的竞争条件。即: - 如果“客户端”TTL 在我核对区域后立即过期,则 DNS 查找将失败,直到发生重新部署并且记录在 Azure DNS 中生效

但这提出了问题:

  • 如果我删除区域,Azure DNS 是否仍会缓存 TTL?
    编辑:根据这里的内容,答案似乎“不是真的” :
    • 对现有 DNS 记录的更改可能需要更长的时间,但仍应在 60 秒内反映在 Azure DNS 名称服务器上

  • 如果我在 nuking 之前重新部署当前版本,是否可以有效地重置 Azure DNS 缓存(如果存在)?
    • 编辑:基于 ^^^,这给了我 <= (60 sec - TimeToRegisterInAzureDNS)。
4

1 回答 1

1

这是因为子资源实际上并不是资源,即使它们是在模板中以这种方式创作的。部署的“模式”由 ARM 在平台层处理,图中唯一的资源是 dnszone。

您可能会争辩说,RP 应该随后更新属性以从 dnszone 资源中删除另一个 cname(这将与部署模式无关)......因为如果不是,唯一的办法就是删除整个记录,这可能不理想。不同的 RP 在 ARM 中处理这种不同的方式(不幸的是)...如果您对该行为有强烈的看法,您可以打开用户语音请求...

这种帮助?

于 2018-03-04T15:54:02.317 回答