Azure ARM - 完整部署是否应在省略时删除现有(子)资源?
Azure ARM - Should Complete Deployment delete existing (child) Resources when omitted?
在完整资源组部署过程中,如果未在模板中指定资源,则预计资源将被删除。
但是在我的情况下(部署带有 CNAME 的 DNS 区域的 RSG),如果 CNAME 是通过 copy/copyIndex 迭代器指定的,则不会删除从数组参数投影后丢失的 CNAME .
我有 a basic template 可以重现这个问题。
- 将 CNAME 记录添加到参数文件。
- 部署模板(完成)并验证 CNAME 是否已创建。
- 从参数文件中删除 1 条或多条 CNAME 记录。
- 部署模板(完成)并观察已删除的 CNAME 资源未被删除。
我找不到任何解释此行为警告的文档,所以我不确定这是错误还是预期行为?
编辑/跟进:
如果我采用 'heavy-handed' 核对整个 DNS 区域的方法,然后立即使用新模板重新部署它,这是否会导致 DNS 服务出现故障,假设没有问题重新部署并且此操作发生在受影响资源的 TTL 下?
虽然这 听起来 合理,但我的直觉告诉我这始终是无法保证的竞争条件。 IE:
- 如果 'a client' TTL 在我核对区域后立即过期,则 DNS 查找将失败,直到重新部署发生 并且记录在 Azure DNS 中生效。
但这引发了问题:
- 如果我删除区域,Azure DNS 是否仍然缓存 TTL?
编辑: 答案出现成为 'not really' based on content here:
Changes to existing DNS records can take a little longer, but should still be reflected on the Azure DNS name servers within 60 seconds
- 如果我在 nuking 之前重新部署当前版本,我是否可以有效地重置该 Azure DNS 缓存(如果存在)?
- 编辑: 基于 ^^^,这给了我 <=(60 秒 - TimeToRegisterInAzureDNS)。
这是因为子资源实际上并不是资源,即使它们是在模板中以这种方式创作的。 "mode" 部署由 ARM 在平台层处理,图中唯一的资源是 dnszone。
您可能会争辩说 RP 然后应该更新属性以从 dnszone 资源中删除其他 cname(这将独立于部署模式)...因为如果不这样做,唯一的办法就是删除整个记录里面可能并不理想。不同的 RP 在 ARM 中处理这种不同的方式(不幸的是)...如果您对这种行为有强烈的看法,您可以打开用户语音请求...
有帮助吗?
在完整资源组部署过程中,如果未在模板中指定资源,则预计资源将被删除。
但是在我的情况下(部署带有 CNAME 的 DNS 区域的 RSG),如果 CNAME 是通过 copy/copyIndex 迭代器指定的,则不会删除从数组参数投影后丢失的 CNAME .
我有 a basic template 可以重现这个问题。
- 将 CNAME 记录添加到参数文件。
- 部署模板(完成)并验证 CNAME 是否已创建。
- 从参数文件中删除 1 条或多条 CNAME 记录。
- 部署模板(完成)并观察已删除的 CNAME 资源未被删除。
我找不到任何解释此行为警告的文档,所以我不确定这是错误还是预期行为?
编辑/跟进:
如果我采用 'heavy-handed' 核对整个 DNS 区域的方法,然后立即使用新模板重新部署它,这是否会导致 DNS 服务出现故障,假设没有问题重新部署并且此操作发生在受影响资源的 TTL 下?
虽然这 听起来 合理,但我的直觉告诉我这始终是无法保证的竞争条件。 IE: - 如果 'a client' TTL 在我核对区域后立即过期,则 DNS 查找将失败,直到重新部署发生 并且记录在 Azure DNS 中生效。
但这引发了问题:
- 如果我删除区域,Azure DNS 是否仍然缓存 TTL?
编辑: 答案出现成为 'not really' based on content here:Changes to existing DNS records can take a little longer, but should still be reflected on the Azure DNS name servers within 60 seconds
- 如果我在 nuking 之前重新部署当前版本,我是否可以有效地重置该 Azure DNS 缓存(如果存在)?
- 编辑: 基于 ^^^,这给了我 <=(60 秒 - TimeToRegisterInAzureDNS)。
这是因为子资源实际上并不是资源,即使它们是在模板中以这种方式创作的。 "mode" 部署由 ARM 在平台层处理,图中唯一的资源是 dnszone。
您可能会争辩说 RP 然后应该更新属性以从 dnszone 资源中删除其他 cname(这将独立于部署模式)...因为如果不这样做,唯一的办法就是删除整个记录里面可能并不理想。不同的 RP 在 ARM 中处理这种不同的方式(不幸的是)...如果您对这种行为有强烈的看法,您可以打开用户语音请求...
有帮助吗?