Files
terraform/oracle/kr/STORAGE_REALLOCATION_EXPLANATION.md

55 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 存储资源重新分配说明
## 目标
根据用户的需求我们重新设计了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. 运行以下命令执行资源重新分配:
```bash
cd /home/ben/terraform/oracle/kr
./reallocate_storage.sh
```
2. 如果计划符合预期,执行应用:
```bash
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`: 自动化执行脚本