Импорт существующих ресурсов
Научитесь импортировать уже существующую облачную инфраструктуру в состояние Terraform, передавая ранее созданные ресурсы под управление IaC.
«Импорт существующих ресурсов» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 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) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Чему я научусь в уроке «Импорт существующих ресурсов»?
Научитесь импортировать уже существующую облачную инфраструктуру в состояние Terraform, передавая ранее созданные ресурсы под управление IaC. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?
Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Импорт существующих ресурсов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?
Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Удалённые хранилища состояния
- Блокировка состояния и согласованность
- Импорт существующих ресурсов
- Рефакторинг состояния с помощью moved и removed