terraform能否并行运行多个基础设施/工作区的“应用”?

2024-05-15 16:52:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个terraform实例和脚本,可以在azure中创建infra。我们希望使用相同的脚本为azure上的每个客户创建/更新/销毁独立的infra。我们通过为每个客户机分配一个工作区、不同的var文件以及在azure上使用后端远程状态文件来实现这一点

我们的目的是创建一个包装器python程序,该程序可以创建多个线程并触发terraform并行应用于所有工作空间。这似乎不起作用,因为terraform一次运行一个工作区。 关于如何实现terraform并行执行的任何建议/建议适用于不同的工作区


Tags: 文件实例程序目的脚本客户机客户远程
2条回答

同时运行多个Terraform进程是安全的,只要:

  • 在状态存储和锁配置方面,它们都有完全不同的后端配置。(如果它们具有重叠的锁配置,那么它们将相互互斥,即使您运行多个副本,也可以有效地序列化操作。)
  • 它们使用一组完全不相交的远程对象,包括由托管资源(resource块)和数据资源(data块)表示的对象

大多数远程API本身不直接支持任何类型的事务或互斥概念,因此Terraform通常不能为单个对象提供细粒度互斥。但是,使用完全独立的远程对象的多个运行不会相互交互

同时删除工作区(使用terraform workspace delete)和针对该工作区的操作将导致未定义的行为,因为它可能会删除Terraform用于跟踪该操作的对象

没有用于同时运行多个操作的内置Terraform命令,因此这样做需要包装Terraform的自定义自动化

相关问题 更多 >