如何减少刷新Terraform状态所需的时间?

时间:2018-07-14 09:11:37

标签: dns terraform amazon-route53 infrastructure terraform-provider-aws

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

我们有几种不同的服务,包括容器化后端和CDN前端。

从Route53域和命名空间到ELB,ECS和CloudFront,有很多事情要做。

当前发生的问题之一是,主要由于Route53 DNS,检查,刷新和验证地形状态需要很长时间。

这是我们要解决的问题:

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

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

2 个答案:

答案 0 :(得分:0)

您应该将状态划分为具有合理逻辑区别的组件子状态,例如“前端”,“缓存”或对您的公司如何组织和分类基础结构有意义的子状态。

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

答案 1 :(得分:0)

我来这里是因为我正在研究类似的问题。似乎TF在图遍历方面很糟糕,因此您的内容之间的相互联系越多,其效果就越差。我有2300种资源的毛线球。在具有足够内存和处理器的机器上计划要花49分钟才能在并行度10下运行而不会达到峰值。三分之一用于刷新状态,由于它受AWS CLI调用的约束,因此可能无法减少。但是在状态刷新之前花的第三笔钱和在状态刷新后花的第三笔钱似乎主要是在图表中(基于日志)无所事事。

我发现一些讨论似乎表明您的代码结构可能会极大地影响计划时间,特别是for_each(链接#1#2)的使用。由于我的代码库大量使用了此功能,因此我发现了这一点很有趣。 YMMV;)