Dns 如何减少刷新地形所需的时间';什么州?

Dns 如何减少刷新地形所需的时间';什么州?,dns,terraform,amazon-route53,infrastructure,terraform-provider-aws,Dns,Terraform,Amazon Route53,Infrastructure,Terraform Provider Aws,我工作的公司的大多数AWS基础设施都是使用Terraform进行描述和管理的 我们有几种不同的服务,包括集装箱后端和CDN前端 从Route53域和名称空间到ELBs、ECS和CloudFront,有很多事情要做 目前正在发生的问题之一是,主要由于路由53 DNS,检查、刷新和验证地形状态需要很长时间 这就是我们试图解决的问题: 如何大幅减少刷新/检查tf状态所需的时间? 将其移动到单独的存储库显然不是一个好主意,因为这会使所有与Route53相关的变量无法访问或可能过时。您应该将状态分解为具有

我工作的公司的大多数AWS基础设施都是使用Terraform进行描述和管理的

我们有几种不同的服务,包括集装箱后端和CDN前端

从Route53域和名称空间到ELBs、ECS和CloudFront,有很多事情要做

目前正在发生的问题之一是,主要由于路由53 DNS,检查、刷新和验证地形状态需要很长时间

这就是我们试图解决的问题:

如何大幅减少刷新/检查tf状态所需的时间?


将其移动到单独的存储库显然不是一个好主意,因为这会使所有与Route53相关的变量无法访问或可能过时。

您应该将状态分解为具有合理逻辑区别的组件子状态,例如“前端”、“缓存”或者任何对公司如何组织和分类基础设施有意义的东西


在使变量可访问方面,您可以将其他状态声明为数据源并从中提取(假设它们对您感兴趣的值具有有效的输出)。

我来这里是因为我正在研究一个类似的问题。看起来TF在图形漫游方面很糟糕,所以你的东西越相互关联,它的性能就越差。我有一个拥有2300个资源的线团。在一台有足够内存和处理器的机器上计划需要49分钟,以并行度10运行而不会达到峰值。第三个是刷新状态,这可能无法减少,因为它受AWS CLI调用的约束。但状态刷新前的第三次和状态刷新后的第三次似乎主要是在图中虚张声势(基于日志)


我发现一些讨论似乎表明代码的结构可能会显著影响计划时间,特别是对每个(link&)使用
。由于我的代码库大量使用了它,我发现这很有趣。YMMV;)

你所有的地形配置都在一个地方吗?最佳实践表明,您应该将内容拆分为需要同时应用的组内容,以最小化爆炸半径,在不破坏状态的情况下更容易进行并发更改,并减少Terraform刷新和构建依赖关系图所需的时间。有多少资源(量化为计划输出中每行1个资源)一个计划需要花费多少时间?例如:我有250个资源,其中20个是Routh53的东西,需要花费20秒来完成一个计划。你看到的时间是否与此相称?@ yDaTeSkor我们有一个单一的回购计划来描述整个公司的基础设施。对我们来说是有道理的,但它们仍然被解读为“一次完成”@Shorn我必须将我的数据与您的数据进行比较,谢谢您提供。虽然我们拥有的Route53资源的数量至少比这多一个数量级。单次回购是可以的,但通常如果需要同时应用.tf文件,您只会将它们放在同一目录中。然后,您应该拆分目录结构以StackOverflow上的其他Terraform项目结构问题中提到的方式升级。显然,如果您可以通过拆分来减少堆栈的大小,您应该会看到计划时间的超线性减少,但我猜来这里的人已经尝试过了;)