Может ли terraform запускаться параллельно для нескольких инфраструктур / рабочих пространств? - PullRequest
1 голос
/ 28 мая 2020

У нас есть один экземпляр terraform и сценарий, который может создавать инфраструктуру в azure. Мы хотели бы использовать одни и те же сценарии для создания / обновления / уничтожения изолированной инфраструктуры для каждого из наших клиентов на azure. Мы достигли этого, назначив одно рабочее пространство для каждого клиента, разные файлы var и используя файлы удаленного состояния серверной части на azure.

. Наша цель - создать программу-оболочку python, которая могла бы создавать несколько потоков и запускать terraform применяются параллельно для всех рабочих пространств. Кажется, это не работает, поскольку terraform запускается для одной рабочей области за раз. Любые предложения / советы о том, как добиться параллельного выполнения terraform, применяемого для разных рабочих пространств?

1 Ответ

1 голос
/ 29 мая 2020

Можно безопасно запускать несколько процессов Terraform одновременно, если:

  • Все они имеют совершенно разные конфигурации серверной части, как с точки зрения хранилища состояний, так и с точки зрения конфигурации блокировки. (Если у них есть перекрывающаяся конфигурация блокировки, они будут мьютексировать друг друга, эффективно сериализуя операции, несмотря на то, что вы запускаете несколько копий.)
  • Они работают с полностью непересекающимся набором удаленных объектов, включая те, которые представлены обоими управляемые ресурсы (resource блоки) и ресурсы данных (data блоки).

Большинство удаленных API-интерфейсов не поддерживают напрямую какие-либо транзакции или концепции мьютексов, поэтому Terraform, как правило, не может предлагать точные- зернистое взаимное исключение для отдельных объектов. Однако несколько запусков, которые работают с полностью отдельными удаленными объектами, не будут взаимодействовать друг с другом.

Удаление рабочего пространства (с использованием terraform state rm) одновременно с операцией над этим рабочим пространством приведет к неопределенному поведению, поскольку оно может Удалите те самые объекты, которые Terraform использует для отслеживания операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...