Azure ARM - 是否应该在省略时完成部署删除现有(子)资源?

时间:2018-03-02 16:13:54

标签: azure azure-resource-manager azure-deployment azure-resource-group

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

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

我有a basic template应该重现这个问题。

  1. 将CNAME记录添加到参数文件中。
  2. 部署模板(完整)&验证是否已创建CNAME。
  3. 从参数文件中删除一个或多个CNAME记录。
  4. 部署模板(完整)&观察删除的CNAME资源不会被删除。
  5. 我找不到任何解释这种行为警告的文档,所以我不确定这是一个错误还是预期的行为?

    编辑/跟进:

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

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

    但这提出了一些问题:

    • 如果我删除了区域,Azure DNS是否仍会为TTL缓存?
      编辑:答案似乎是“不是真的”{{3 }}:
      •   

        对现有DNS记录的更改可能需要更长时间,但仍应在60秒内反映在Azure DNS名称服务器上

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

1 个答案:

答案 0 :(得分:0)

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

你可能会认为RP应该更新属性以从dnszone资源中删除另一个cname(它将独立于部署模式)...因为如果它不是唯一的办法是删除整个记录可能不太理想。不同的RP在ARM中处理这种不同的方式(不幸的是)......如果你对这种行为有强烈的看法,你可以打开一个用户声音请求......

那有帮助吗?