Что делать, если Terraform воссоздаст ресурс, на который есть ссылка в другом штате?

#terraform #terraform-provider-gcp #infrastructure-as-code

Вопрос:

TL;DR: Что, если Terraform уничтожит и воссоздаст ресурс, на который ссылается другой ресурс, расположенный в другом файле состояния. Будет ли это нарушать ссылку в облаке и вызывать простои до тех пор, пока я не запущу приложение к другому файлу состояния?

Привет. Я использую Terraform и облачную платформу Google. У меня есть файлы Terraform, относящиеся к моим приложениям и микросервисам, отдельно в каждом из репозиториев приложений, а также некоторые другие репозитории исключительно для некоторых инфраструктурных ресурсов, таких как VPC, балансировщик нагрузки и IAM.

Предположим, что служба облачных функций, которая запускает один из моих микросервисов, обеспечивается файлами Terraform, расположенными в определенном репозитории микросервисов, который имеет свое собственное изолированное удаленное состояние.

В репозитории балансировщика нагрузки у меня есть объекты данных, ссылающиеся на удаленное состояние этого микросервиса, поэтому я могу ссылаться на ресурсы из этого состояния, например на службу облачных функций, на которую мне нужно ссылаться при создании Групп конечных точек сети и бэкендов балансировщика нагрузки.

После приведенного выше примера мне интересно, что произойдет, если я изменю что-то в файлах микросервиса, в результате чего какой-то ресурс будет уничтожен и воссоздан. Поскольку другие ресурсы, которые ссылаются на него, находятся в разных репозиториях и файлах состояний, я полагаю, мне нужно будет запустить terraform init и применить внутри обоих репозиториев, я прав или я слишком много думаю? Что бы вы сделали вместо этого, чтобы решить эту проблему?

Комментарии:

1. Как все прошло? Все еще непонятно, почему это плохая практика?

Ответ №1:

Если для вашей установки требуется управление одним и тем же ресурсом из двух разных файлов состояния TF, то вы делаете это неправильно. Это не то, как следует использовать TF, и, конечно, это приведет к проблемам.

Данным ресурсом может управлять только один файл состояния TF.

Комментарии:

1. Я не управляю одним и тем же ресурсом из двух разных файлов состояния TF. Дело в том, что, например, мне нужно передать идентификатор службы облачных функций (управляемой в состоянии приложения) для создания ресурсов балансировщика нагрузки (ресурсы балансировщика нагрузки управляются в его собственном файле состояния).