0Pricing
DevOps Bootcamp · Урок

Импорт существующих ресурсов

Научитесь импортировать уже существующую облачную инфраструктуру в состояние Terraform, передавая ранее созданные ресурсы под управление IaC.

«Импорт существующих ресурсов» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Перенос существующей инфраструктуры в IaC

Иногда облачные ресурсы создаются вручную или с помощью других инструментов. Импорт Terraform позволяет передать эти существующие ресурсы под управление Terraform.

После этого Terraform будет отслеживать их состояние, а будущие изменения можно будет применять через файлы конфигурации. Это важный шаг при внедрении инфраструктуры как кода (IaC) в среде «brownfield».

Когда требуется импорт

Импорт полезен в нескольких ситуациях:

  • Перенос существующей инфраструктуры: добавление ресурсов, созданных вне Terraform, в рабочий процесс IaC.
  • Постепенное внедрение Terraform: начало работы с существующими ресурсами вместо пересоздания всего с нуля.
  • Восстановление после потери состояния: повторная связь Terraform с ресурсами, если файл состояния был утрачен (хотя при использовании удалённого состояния такое случается редко).

Освоение команды импорта

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

Для этого требуются две основные части информации: Terraform-адрес ресурса и ID этого ресурса у облачного провайдера.

Что такое адрес ресурса?

Адрес ресурса — это способ, которым Terraform идентифицирует определённый ресурс в конфигурации. Он соответствует шаблону resource_type.resource_name.

  • resource_type: тип ресурса (например, aws_s3_bucket, azurerm_resource_group).
  • resource_name: локальное имя, которое Вы присваиваете ресурсу в конфигурации Terraform (например, my_bucket, web_app).

Этот адрес уже должен существовать в Ваших файлах .tf.

Поиск облачного ID

Каждый ресурс у облачного провайдера (например, AWS, Azure, GCP) имеет уникальный идентификатор, который часто называют ID. Этот ID понадобится, чтобы указать Terraform, какой именно существующий ресурс следует импортировать.

Найти ID можно в консоли облачного провайдера, с помощью его CLI или через API. Например, ID корзины AWS S3 — это её имя, а у экземпляра EC2 есть ID экземпляра, например i-0abcdef1234567890.

Определите HCL до импорта

Критически важный шаг: перед запуском terraform import в файлах конфигурации Terraform (.tf) должен быть определён соответствующий блок ресурса.

Этот блок сообщает Terraform, какой тип ресурса следует ожидать и какие атрибуты он должен иметь. При импорте Terraform использует это определение, чтобы понять схему ресурса.

HCL для корзины S3

Предположим, у Вас уже есть корзина AWS S3 с именем my-existing-coddykit-bucket-123. Сначала определите для неё блок ресурса в файле main.tf:

resource "aws_s3_bucket" "my_imported_bucket" {
  bucket = "my-existing-coddykit-bucket-123"
  # Add other expected attributes if known
  # e.g., acl = "private"
}

Импорт корзины S3

Теперь, когда у Вас есть определение HCL, можно выполнить команду terraform import. Замените my-existing-coddykit-bucket-123 фактическим именем/ID существующей корзины.

Убедитесь, что Вы уже выполнили terraform init в своём каталоге!

terraform import aws_s3_bucket.my_imported_bucket my-existing-coddykit-bucket-123

Проверьте состояние Terraform

После успешного импорта Terraform добавит ресурс в файл состояния. Проверить это можно с помощью команды terraform state show, которая отображает атрибуты импортированного ресурса с точки зрения Terraform.

Затем обязательно выполните terraform plan, чтобы убедиться в отсутствии неожиданных различий между HCL и фактическим состоянием импортированного ресурса.

terraform state show aws_s3_bucket.my_imported_bucket

Быстрая проверка: порядок импорта

Вы хотите импортировать существующий экземпляр AWS EC2 в Terraform. Какой из перечисленных шагов MUST быть выполнен до запуска команды terraform import?

Итоги: перенос инфраструктуры под управление Terraform

Вы узнали, как передавать существующие облачные ресурсы под управление Terraform с помощью terraform import.

  • Сначала определите блок ресурса в HCL.
  • Затем найдите ID ресурса у облачного провайдера.
  • Наконец, выполните terraform import ADDRESS ID.
  • Всегда после этого выполняйте terraform plan, чтобы согласовать все различия.

Эта мощная команда помогает устранить разрыв между инфраструктурой, управляемой вручную, и полностью ориентированной на IaC средой.

Часто задаваемые вопросы

Урок «Импорт существующих ресурсов» бесплатный?

Да — полный текст урока «Импорт существующих ресурсов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Импорт существующих ресурсов»?

Научитесь импортировать уже существующую облачную инфраструктуру в состояние Terraform, передавая ранее созданные ресурсы под управление IaC. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Импорт существующих ресурсов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Удалённые хранилища состояния
  2. Блокировка состояния и согласованность
  3. Импорт существующих ресурсов
  4. Рефакторинг состояния с помощью moved и removed
← Назад к DevOps Bootcamp