Как добавить в Terraform вручную созданный ресурс

«Как добавить в Terraform вручную созданный ресурс» — вопрос из категории Terraform, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для управления уже существующим ресурсом с помощью Terraform используется команда terraform import. Она связывает физический ресурс из облачного провайдера с ресурсом, описанным в вашей конфигурации, и добавляет его в состояние (state file).

Процесс импорта:

  1. Определите ресурс в коде. Сначала в .tf-файле нужно описать ресурс, который будет соответствовать существующему. Например, для EC2-инстанса в AWS:

    resource "aws_instance" "my_imported_server" {
      # Здесь указываются параметры, которые вы хотите управлять через Terraform.
      # На момент импорта они могут не совпадать с реальными.
      ami           = "ami-0c55b159cbfafe1f0"
      instance_type = "t2.micro"
      tags = {
        Name = "Imported-Server"
      }
    }
  2. Выполните импорт. Используйте команду, указав адрес ресурса в Terraform и его уникальный ID у провайдера.

    terraform import aws_instance.my_imported_server i-1234567890abcdef0
    • aws_instance.my_imported_server — это адрес ресурса (<тип_ресурса>.<имя>).
    • i-1234567890abcdef0 — это ID инстанса в AWS Console.
  3. Синхронизируйте состояние. После импорта выполните terraform plan. Команда покажет расхождения между вашим кодом (.tf файл) и реальным состоянием импортированного ресурса. Вам необходимо обновить конфигурацию, чтобы она точно описывала ресурс, иначе следующий terraform apply попытается изменить его под ваше описание.

Важно: Импорт добавляет ресурс только в файл состояния. Конфигурацию (код) вы должны поддерживать вручную, чтобы она соответствовала импортированному ресурсу.