๋ฆฌํฉํ ๋ง ํ ๋ ๊ผญ ํ์ํ ๊ธฐ๋ฅ์ด๋ค.
๊ธฐ์กด์ ์๋์ฝ๋๋ฅผ ๋ชจ๋๋ก ๋ณด๋ด๋ณด์.
ํ์ฌ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
main.tf
Copy module "instance_nonflex" {
source = "oracle-terraform-modules/compute-instance/oci"
compartment_ocid = var.compartment_id
# compute instance parameters
ad_number = var.instance_ad_number
instance_count = var.instance_count
instance_display_name = var.instance_display_name
instance_state = var.instance_state
shape = var.shape
source_ocid = var.source_ocid
source_type = var.source_type
ssh_public_keys = var.ssh_public_keys
public_ip = var.public_ip
subnet_ocids = [local.private_subnet_id]
primary_vnic_nsg_ids = null
boot_volume_backup_policy = var.boot_volume_backup_policy
block_storage_sizes_in_gbs = var.block_storage_sizes_in_gbs
}
Copy terraform plan
terraform apply --auto-approve
terraform state list
Copy module.instance_nonflex.data.oci_identity_availability_domains.ad
module.instance_nonflex.oci_core_instance.instance[0]
module.instance_nonflex.oci_core_instance.instance[1]
module.instance_nonflex.oci_core_instance.instance[2]
module.instance_nonflex.oci_core_volume.volume[0]
module.instance_nonflex.oci_core_volume.volume[1]
module.instance_nonflex.oci_core_volume.volume[2]
module.instance_nonflex.oci_core_volume_attachment.volume_attachment[0]
module.instance_nonflex.oci_core_volume_attachment.volume_attachment[1]
module.instance_nonflex.oci_core_volume_attachment.volume_attachment[2]
๋ชจ๋๋ก ๋ฐ๊ฟ๋ณด์
์ด์ ๋ชจ๋๋ก ๋ณ๊ฒฝํด๋ณธ๋ค.
ํด๋๋ฅผ ๋ง๋ค๊ณ main.tf๋ฅผ ๋ง๋ค๊ณ ์ฝ๋๋ฅผ ์ด๋ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด main์์ ์ด ๋ชจ๋์ ์ฌ์ฉํด๋ณด์.
Copy module "instance" {
compartment_id = var.compartment_id
source = "./base/instance"
source_ocid = "ocid1.image.oc1.us-sanjose-1.ga5ohbkd3nwa"
instance_state = "RUNNING"
instance_count = 3
ssh_public_keys = var.ssh_public_keys
}
9๊ฐ๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋ง๋ ๋ค. ์ด๋ฌ๋ฉด ๋ฌธ์ ๋๋ค. ์คํ์ค์ธ ์๋ฒ๋ฅผ ์์ ๋ฒ๋ฆฌ๊ฒ ๋๋ค.
terraform state mv
Copy terraform state mv module.instance_nonflex.oci_core_instance.instance[0] module.instance.oci_core_instance.instance[0]
์ด๊ฑธ๋ก ๊ฐ๋ฅํ์๋ ํ๋ค.
moved block
์ฌ์ค ์ฝ๋์ ๋ฃ์ด์ผ ์ข๊ธฐ๋ ํ๋ค.
Copy moved {
from = OLD
to = NEW
}
์ด๊ฑธ ์ถ๊ฐํ์๋ค.
Copy moved {
from = module.instance_nonflex.oci_core_instance.instance
to = module.instance.module.instance_nonflex.oci_core_instance.instance
}
moved {
from = module.instance_nonflex.oci_core_volume.volume
to = module.instance.module.instance_nonflex.oci_core_volume.volume
}
moved {
from = module.instance_nonflex.oci_core_volume_attachment.volume_attachment
to = module.instance.module.instance_nonflex.oci_core_volume_attachment.volume_attachment
}
0๊ฐ๊ฐ ๋ฐ๊ท๋๊ฒ์ ์์ ์๋ค.
Copy terraform apply --auto-approve
terraform state list
remote module
๋ฆฌ๋ชจํธ ๋ชจ๋์์๋ block์ด ์๋๋ค. ๊ผญ ํ์ธํด์ผํ๋ค.
Copy terraform state mv #์ผ๋ก ์ฒ๋ฆฌํด์ผํ๋ค.
tfautomv
https://github.com/padok-team/tfautomv
์๋์ผ๋ก moved block์ ๋ง๋ค์ด์ค๋ค.
Copy brew install padok-team/tap/tfautomv
tfautomv
moved ๋ธ๋ฝ์ ์ง์ฐ๊ณ ๋ช
๋ น์ด๋ฅผ ์คํํด๋ณด์.
9๊ฐ๊ฐ ์ถ๊ฐ๋๊ณ 9๊ฐ๊ฐ ์ญ์ ๋๋ค๊ณ ํ๋ค. ์์ํ๋ ๊ฒฐ๊ณผ์ด๋ค.
์ด์ ๋ช
๋ น์ด๋ฅผ ์คํํด๋ณด์.
moves.tfํ์ผ์ด ์์ฑ๋๋ค.
์ข๋ค.
todo
moved๊ฐ ๊ณ์ ์์ด์ผํ๋?
terraform state mv
๋ก ์ฒ๋ฆฌํด๋ ๋๋ค.