Terraform 是否自动批处理资源创建?
Does Terraform batch resource creation automatically?
所以我使用 TF Provider 通过简单 terraform apply
创建了 150 个资源,并注意到它会批量打印资源:
# batch #1
foo_resource.bar_1: Creating...
...
foo_resource.bar_10: Creating...
foo_resource.bar_1: Creation complete after 12s [id=...]
...
foo_resource.bar_10: Creation complete after 15s [id=...]
# batch #2
foo_resource.bar_11: Creating...
...
此外,当我打开跟踪日志时,我可以看到同一秒内有 10 个日志:
# batch #1
2022-03-03T00:48:59.139-0800 [INFO] provider.: 2022/03/03 00:48:59 [DEBUG] Created foo_1: timestamp=2022-03-03T00:48:59.139-0800
2022-03-03T00:48:59.139-0800 [INFO] provider.: 2022/03/03 00:48:59 [DEBUG] Created foo_3: timestamp=2022-03-03T00:48:59.139-0800
...
# batch #2
2022-03-03T00:49:20.866-0800 [INFO] provider.: 2022/03/03 00:49:20 [DEBUG] Created foo_12: timestamp=2022-03-03T00:49:10.866-0800
因此您可以清楚地看到批次 #1 和批次 #2 之间的时间戳差异约为 20
秒(00:49:20 - 00:48:59),这与提供商使用的超时完全相同在创建每个资源后在内部,所以它似乎不会同时发送 150
创建请求,而是分批执行它们,每个批处理大小为 10
.
问题是 Terraform 批量资源创建是自动的还是只是巧合?
Terraform 不执行批处理,但有并行度限制,默认为 10:https://www.terraform.io/cli/commands/apply#parallelism-n
所以我使用 TF Provider 通过简单 terraform apply
创建了 150 个资源,并注意到它会批量打印资源:
# batch #1
foo_resource.bar_1: Creating...
...
foo_resource.bar_10: Creating...
foo_resource.bar_1: Creation complete after 12s [id=...]
...
foo_resource.bar_10: Creation complete after 15s [id=...]
# batch #2
foo_resource.bar_11: Creating...
...
此外,当我打开跟踪日志时,我可以看到同一秒内有 10 个日志:
# batch #1
2022-03-03T00:48:59.139-0800 [INFO] provider.: 2022/03/03 00:48:59 [DEBUG] Created foo_1: timestamp=2022-03-03T00:48:59.139-0800
2022-03-03T00:48:59.139-0800 [INFO] provider.: 2022/03/03 00:48:59 [DEBUG] Created foo_3: timestamp=2022-03-03T00:48:59.139-0800
...
# batch #2
2022-03-03T00:49:20.866-0800 [INFO] provider.: 2022/03/03 00:49:20 [DEBUG] Created foo_12: timestamp=2022-03-03T00:49:10.866-0800
因此您可以清楚地看到批次 #1 和批次 #2 之间的时间戳差异约为 20
秒(00:49:20 - 00:48:59),这与提供商使用的超时完全相同在创建每个资源后在内部,所以它似乎不会同时发送 150
创建请求,而是分批执行它们,每个批处理大小为 10
.
问题是 Terraform 批量资源创建是自动的还是只是巧合?
Terraform 不执行批处理,但有并行度限制,默认为 10:https://www.terraform.io/cli/commands/apply#parallelism-n