linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • База знаний
  • Шпаргалка
  • Capstone
  • Собеседование
home/terraform/how/tf-moved-removed-import-blocks

how/state

moved, removed, import - те же операции, но в HCL

Декларативные блоки для переименования, выпиливания и затаскивания ресурсов. Что они дают сверх CLI, в каких версиях Terraform появились, и почему живут в git.

Императивные команды state mv, state rm и import решают конкретные задачи (см. tf-state-mv-rm-import), но у них одна общая проблема: они не воспроизводимы.

  • В git не видно, кто, когда и зачем переименовал ресурс.
  • В CI нельзя «прогнать историю» - она не записана.
  • Если репо клонировали в новое окружение, операции надо повторять руками.

Поэтому в Terraform постепенно появились декларативные аналоги:

  • moved блок - с Terraform 1.1 (декабрь 2021).
  • import блок - с Terraform 1.5 (июнь 2023).
  • removed блок - с Terraform 1.7 (январь 2024).

Все три пишутся прямо в HCL, попадают в git, отрабатывают через terraform apply как часть обычного плана. Жми ▶.

step 1/5·00 · базовая позиция
MAIN.TFresource "aws_s3_bucket" "old" {bucket = "linuxlab-3f4a"}TERRAFORM.TFSTATEпосле applyaws_s3_bucket.oldid: linuxlab-3f4aAWSфизический бакетlinuxlab-3f4aбазовая позиция: один ресурс под управлением Terraform

§ шаги

  1. Один ресурс в HCL, одна запись в state, один бакет в облаке.

    hcl
    resource "aws_s3_bucket" "old" {
      bucket = "linuxlab-3f4a"
    }

    Тот же стартовый расклад, что в tf-state-mv-rm-import. Сейчас будем менять его декларативно - через блоки в HCL, а не через CLI.

итого

Когда блоки лучше CLI:

  • любой prod-pipeline. Изменения видны в pull-request, обсуждаемы, откатываемы.
  • любой репо, который раскатывается в несколько окружений (dev/staging/prod). Один блок отрабатывает во всех.
  • любая ситуация, где нужна история. CLI - это след в терминале одного человека, блок - запись в git.

Когда CLI всё ещё уместен:

  • одноразовая правка локального state в учебном проекте.
  • быстрая диагностика: terraform state list, terraform state show <addr>.
  • сценарии, которые сейчас не покрыты блоками (например, state replace-provider).

Жизненный цикл moved/removed/import-блоков:

Все три - transient. После того как блок отработал в apply, его можно удалять из HCL: state уже изменён, повторно блок ничего не делает. На практике их часто держат пару спринтов на случай отката, потом убирают.

Если ты забыл удалить moved блок и удалил target-ресурс (aws_s3_bucket.primary), Terraform начнёт ругаться: «moved блок ссылается на адрес, которого нет». Это сигнал, что блок устарел и пора чистить.

Дальше: tf-state-anatomy про устройство state, tf-drift про то, что бывает между applies.

§ копнуть в базу знаний

  • tf-moved-blockmoved блок: подробный разбор
  • tf-removed-blockremoved блок: вывести ресурс из управления
  • tf-import-blockimport блок: декларативный import
  • tf-state-manipulationterraform state mv/rm/list - императивные команды
  • tf-generate-config-outplan -generate-config-out: автогенерация HCL

§ попробовать руками

  • ›tf-intermediate-07-state-manipulation- Операции над state: mv, rm, list
  • ›tf-intermediate-08-import- Import: затаскиваем существующий бакет
  • ›tf-intermediate-09-moved- Moved-блок: переименование без destroy
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки