Ответ
Для управления уже существующим ресурсом с помощью Terraform используется команда terraform import. Она связывает физический ресурс из облачного провайдера с ресурсом, описанным в вашей конфигурации, и добавляет его в состояние (state file).
Процесс импорта:
-
Определите ресурс в коде. Сначала в
.tf-файле нужно описать ресурс, который будет соответствовать существующему. Например, для EC2-инстанса в AWS:resource "aws_instance" "my_imported_server" { # Здесь указываются параметры, которые вы хотите управлять через Terraform. # На момент импорта они могут не совпадать с реальными. ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "Imported-Server" } } -
Выполните импорт. Используйте команду, указав адрес ресурса в Terraform и его уникальный ID у провайдера.
terraform import aws_instance.my_imported_server i-1234567890abcdef0aws_instance.my_imported_server— это адрес ресурса (<тип_ресурса>.<имя>).i-1234567890abcdef0— это ID инстанса в AWS Console.
-
Синхронизируйте состояние. После импорта выполните
terraform plan. Команда покажет расхождения между вашим кодом (.tfфайл) и реальным состоянием импортированного ресурса. Вам необходимо обновить конфигурацию, чтобы она точно описывала ресурс, иначе следующийterraform applyпопытается изменить его под ваше описание.
Важно: Импорт добавляет ресурс только в файл состояния. Конфигурацию (код) вы должны поддерживать вручную, чтобы она соответствовала импортированному ресурсу.