Files
terraform/oracle/kr/STORAGE_REALLOCATION_EXPLANATION.md

1.9 KiB
Raw Permalink Blame History

存储资源重新分配说明

目标

根据用户的需求我们重新设计了Terraform配置以实现"resize"操作,而不是创建全新的资源。这种做法可以避免额外费用,并更准确地模拟资源的重新分配。

解决方案概述

1. 设计思路

  • 通过设置 ch2_enabled = false 来模拟 ch2 实例的终止
  • 在 ch2 实例终止后,创建一个新的 200GB 存储卷分配给 A1 实例
  • 这样模拟了将原本分配给 ch2 的资源重新分配给 A1 实例的过程

2. 关键变更

A. 变量控制

  • ch2_enabled: 控制是否创建 ch2 实例
    • 当设为 false 时,表示 ch2 已终止,可以将资源重新分配
    • 当设为 true 时,会创建 ch2 实例(通常不需要)

B. 存储卷管理

  • oci_core_volume.a1_additional_storage: 代表从 ch2 释放的资源重新分配给 A1
  • 使用生命周期规则确保只有在 ch2 被"终止"后才创建此卷

C. 依赖关系

  • A1 实例依赖于 ch2 实例,确保在 ch2 被处理后再处理 A1
  • 存储卷附加依赖于 ch2 被"终止"

3. 执行流程

  1. 运行以下命令执行资源重新分配:
cd /home/ben/terraform/oracle/kr
./reallocate_storage.sh
  1. 如果计划符合预期,执行应用:
TF_CLI_CONFIG_FILE=.terraformrc terraform apply -var ch2_enabled=false -var ch3_enabled=true -var a1_storage_size_gb=200

4. 成本效益

  • 避免创建新的计算实例,仅调整存储资源
  • 通过重新分配现有资源,优化成本
  • 模拟真实的资源回收和再分配过程

注意事项

  1. 由于Terraform无法直接管理非Terraform创建的现有实例我们采用了模拟方式
  2. 真正的实例终止应在Terraform之外手动执行
  3. 该配置重点在于存储资源的重新分配,而非计算实例的调整

文件变更

  • resources.tf: 更新了配置以支持动态资源分配
  • reallocate_storage.sh: 自动化执行脚本