EN: Read in English
Dunia T3: State & Pasukan
Blok moved dan refactor
Anda akan belajar: cara tukar nama dalam pelan tanpa merobohkan apa-apa.
Teks BM belum disemak oleh penutur asli.
Disemak dengan OpenTofu 1.13 pada 1 Nov 2026
Masalahnya
Anda tukar nama random_pet.stall kepada random_pet.chef dalam main.tf. Itu sahaja. Baca plan ini.
Tekan apa yang OpenTofu akan buat pada setiap satu.
+ cipta~ ubah di tempat- musnahkan-/+ ganti
0 daripada 2 sudah dibaca
# random_pet.chef + resource "random_pet" "chef" { + id = (known after apply) + length = 2 + separator = "-" }
Apa jadi pada random_pet.chef?
# random_pet.stall - resource "random_pet" "stall" { - id = "lucky-civet" -> null - length = 2 -> null - separator = "-" -> null }
Apa jadi pada random_pet.stall?
Baris ringkasan muncul bila anda selesai.
Tengok
Tekan baris dengan nama lama.
0 daripada 1 dijumpai
OpenTofu kenal benda melalui alamatnya. Nama baharu nampak macam benda baharu. blok moved (moved block): Kod yang berkata: benda sama, alamat baharu. Tukar nama pun tak ubah benda sebenar. (blok pindah) berkata: “Benda sama, nama baharu.”
Cuba
Tambah blok moved dalam main.tf. Kemudian tofu plan: cari has moved to. Kemudian tofu apply.
Pelan (fail .tf anda)init sudah siap
local_file.menurandom_pet.chefbelum dibina
Sudah dibina (fail state)state #1
local_file.menurandom_pet.stall
- stall
- lucky-civet
Ubah fail, kemudian jalankan tofu plan untuk lihat kesannya.
Petunjuk
Salin empat baris dari kad tadi.Teka
Refactor seterusnya: count jadi for_each. Jadi random_pet.stall[0] jadi random_pet.stall["nasi"]. Apa yang selamatkannya?
Pilih satu jawapan.
Semak
Perubahan mana yang perlukan blok moved?
Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.
Tengok
Cara lama ubah daftar terus. Tiada siapa menyemaknya. Bina juga, supaya anda boleh membacanya.
Ketik kepingan ikut turutan yang betul.
Semak
Anda semak refactor rakan. Leret: bagus, atau perlu dibaiki?
Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.
Tukar nama resource dan tambah blok moved dalam perubahan yang sama
Anda berjaya!
Kini anda boleh tukar nama dan susun semula pelan tanpa bina semula apa-apa.
Nak tahu lebih (pilihan)
moved juga boleh tukar nama seluruh modul: from = module.a, to = module.b. Untuk berhenti mengurus sesuatu tanpa memusnahkannya, guna blok removed dengan lifecycle { destroy = false }. Modul yang orang lain guna patut simpan blok moved untuk masa yang lama.
Misi sebenar
tofu init && tofu applytofu plantofu plantofu apply
0 daripada 4 langkah siap · Tanda anda disimpan.
English
You renamed random_pet.stall to random_pet.chef in main.tf. Nothing else. Read the plan.
OpenTofu knows things by their address. A new name looks like a new thing. A moved block says: “Same thing, new name.”
Add the moved block to main.tf. Then tofu plan: look for has moved to. Then tofu apply.
Next refactor: count becomes for_each. So random_pet.stall[0] becomes random_pet.stall["nasi"]. What keeps it alive?
Which changes need a moved block?
The old way edits the register directly. Nobody reviews it. Build it anyway, so you can read it.
You review a teammate’s refactor. Swipe: good, or needs work?
You can now rename and reshuffle the blueprint without rebuilding anything.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: OpenTofu: refactor dengan blok moved · tofu state mv · Terraform: blok moved
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?