Можно безопасно запускать несколько процессов Terraform одновременно, если:
- Все они имеют совершенно разные конфигурации серверной части, как с точки зрения хранилища состояний, так и с точки зрения конфигурации блокировки. (Если у них есть перекрывающаяся конфигурация блокировки, они будут мьютексировать друг друга, эффективно сериализуя операции, несмотря на то, что вы запускаете несколько копий.)
- Они работают с полностью непересекающимся набором удаленных объектов, включая те, которые представлены обоими управляемые ресурсы (
resource
блоки) и ресурсы данных (data
блоки).
Большинство удаленных API-интерфейсов не поддерживают напрямую какие-либо транзакции или концепции мьютексов, поэтому Terraform, как правило, не может предлагать точные- зернистое взаимное исключение для отдельных объектов. Однако несколько запусков, которые работают с полностью отдельными удаленными объектами, не будут взаимодействовать друг с другом.
Удаление рабочего пространства (с использованием terraform state rm
) одновременно с операцией над этим рабочим пространством приведет к неопределенному поведению, поскольку оно может Удалите те самые объекты, которые Terraform использует для отслеживания операции.