moved block

๋ฆฌํŒฉํ† ๋ง ํ• ๋•Œ ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด๋‹ค.

๊ธฐ์กด์— ์žˆ๋Š”์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆ๋กœ ๋ณด๋‚ด๋ณด์ž.

ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

main.tf

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
}
terraform plan
terraform apply --auto-approve
terraform state list
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์—์„œ ์ด ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด๋ณด์ž.

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
}
terraform plan

9๊ฐœ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋งŒ๋“ ๋‹ค. ์ด๋Ÿฌ๋ฉด ๋ฌธ์  ๋œ๋‹ค. ์‹คํ–‰์ค‘์ธ ์„œ๋ฒ„๋ฅผ ์—†์• ๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค.

terraform state mv

terraform state mv module.instance_nonflex.oci_core_instance.instance[0] module.instance.oci_core_instance.instance[0]

์ด๊ฑธ๋กœ ๊ฐ€๋Šฅํ•˜์‹œ๋„ ํ•˜๋‹ค.

moved block

์‚ฌ์‹ค ์ฝ”๋“œ์— ๋„ฃ์–ด์•ผ ์ข‹๊ธฐ๋Š” ํ•˜๋‹ค.

moved {
  from = OLD
  to   = NEW
}

์ด๊ฑธ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

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
}
terraform plan

0๊ฐœ๊ฐ€ ๋ฐ”๊ท€๋Š”๊ฒƒ์„ ์•Œ์ˆ˜ ์žˆ๋‹ค.

terraform apply --auto-approve
terraform state list

remote module

๋ฆฌ๋ชจํŠธ ๋ชจ๋“ˆ์—์„œ๋Š” block์ด ์•ˆ๋œ๋‹ค. ๊ผญ ํ™•์ธํ•ด์•ผํ•œ๋‹ค.

terraform state mv #์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค.

tfautomv

https://github.com/padok-team/tfautomv

์ž๋™์œผ๋กœ moved block์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

brew install padok-team/tap/tfautomv
tfautomv

moved ๋ธ”๋ฝ์„ ์ง€์šฐ๊ณ  ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž.

9๊ฐœ๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  9๊ฐœ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค๊ณ ํ•œ๋‹ค. ์˜ˆ์ƒํ•˜๋˜ ๊ฒฐ๊ณผ์ด๋‹ค.

์ด์ œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž.

tfautomv

moves.tfํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.

์ข‹๋‹ค.

todo

moved๊ฐ€ ๊ณ„์† ์ž‡์–ด์•ผํ•˜๋‚˜?

terraform state mv๋กœ ์ฒ˜๋ฆฌํ•ด๋„ ๋œ๋‹ค.

Last updated

Was this helpful?