55 lines
1.9 KiB
Markdown
55 lines
1.9 KiB
Markdown
# 存储资源重新分配说明
|
||
|
||
## 目标
|
||
根据用户的需求,我们重新设计了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`: 自动化执行脚本 |