#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. Дело в том, что, например, мне нужно передать идентификатор службы облачных функций (управляемой в состоянии приложения) для создания ресурсов балансировщика нагрузки (ресурсы балансировщика нагрузки управляются в его собственном файле состояния).