Импорт существующих ресурсов
Научитесь импортировать уже существующую облачную инфраструктуру в состояние 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 — локальная установка не требуется.
Все уроки этого курса
- Удалённые хранилища состояния
- Блокировка состояния и согласованность
- Импорт существующих ресурсов
- Рефакторинг состояния с помощью moved и removed