# Oracle Cloud 配置指南

## 概述

本指南将帮助你配置 Oracle Cloud Infrastructure (OCI) 以便与 OpenTofu 一起使用。

## 前提条件

1. Oracle Cloud 账户（可以使用免费层）
2. 已安装 OpenTofu
3. 已安装 OCI CLI（可选，但推荐）

## 步骤 1: 创建 Oracle Cloud 账户

1. 访问 [Oracle Cloud](https://cloud.oracle.com/)
2. 点击 "Start for free" 创建免费账户
3. 完成注册流程

## 步骤 2: 获取必要的 OCID

### 获取 Tenancy OCID

1. 登录 Oracle Cloud Console
2. 点击右上角的用户图标
3. 选择 "Tenancy: <your-tenancy-name>"
4. 复制 OCID 值

### 获取 User OCID

1. 在 Oracle Cloud Console 中
2. 点击右上角的用户图标
3. 选择 "User Settings"
4. 复制 OCID 值

### 获取 Compartment OCID

1. 在导航菜单中选择 "Identity & Security" > "Compartments"
2. 选择你要使用的 compartment（通常是 root compartment）
3. 复制 OCID 值

## 步骤 3: 创建 API 密钥

### 生成密钥对

```bash
# 创建 .oci 目录
mkdir -p ~/.oci

# 生成私钥
openssl genrsa -out ~/.oci/oci_api_key.pem 2048

# 生成公钥
openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem

# 设置权限
chmod 400 ~/.oci/oci_api_key.pem
chmod 400 ~/.oci/oci_api_key_public.pem
```

### 添加公钥到 Oracle Cloud

1. 在 Oracle Cloud Console 中，进入 "User Settings"
2. 在左侧菜单中选择 "API Keys"
3. 点击 "Add API Key"
4. 选择 "Paste Public Key"
5. 复制 `~/.oci/oci_api_key_public.pem` 的内容并粘贴
6. 点击 "Add"
7. 复制显示的 fingerprint

## 步骤 4: 配置 terraform.tfvars

编辑 `infrastructure/environments/dev/terraform.tfvars` 文件：

```hcl
# Oracle Cloud 配置
oci_config = {
  tenancy_ocid     = "ocid1.tenancy.oc1..aaaaaaaa_your_actual_tenancy_id"
  user_ocid        = "ocid1.user.oc1..aaaaaaaa_your_actual_user_id"
  fingerprint      = "aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp"
  private_key_path = "~/.oci/oci_api_key.pem"
  region           = "ap-seoul-1"  # 或你选择的区域
  compartment_ocid = "ocid1.compartment.oc1..aaaaaaaa_your_compartment_id"
}
```

## 步骤 5: 验证配置

```bash
# 检查配置
./scripts/setup/setup-opentofu.sh check

# 初始化 OpenTofu
./scripts/setup/setup-opentofu.sh init

# 生成计划
./scripts/setup/setup-opentofu.sh plan
```

## 可用区域

常用的 Oracle Cloud 区域：

- `ap-seoul-1` - 韩国首尔
- `ap-tokyo-1` - 日本东京
- `us-ashburn-1` - 美国弗吉尼亚州
- `us-phoenix-1` - 美国亚利桑那州
- `eu-frankfurt-1` - 德国法兰克福

## 免费层资源

Oracle Cloud 免费层包括：

- 2 个 AMD 计算实例（VM.Standard.E2.1.Micro）
- 4 个 Arm 计算实例（VM.Standard.A1.Flex）
- 200 GB 块存储
- 10 GB 对象存储
- 负载均衡器
- 数据库等

## 故障排除

### 常见错误

1. **401 Unauthorized**: 检查 API 密钥配置
2. **404 Not Found**: 检查 OCID 是否正确
3. **权限错误**: 确保用户有足够的权限

### 验证连接

```bash
# 安装 OCI CLI（可选）
pip install oci-cli

# 配置 OCI CLI
oci setup config

# 测试连接
oci iam compartment list
```

## 安全最佳实践

1. 定期轮换 API 密钥
2. 使用最小权限原则
3. 不要在代码中硬编码凭据
4. 使用 compartment 隔离资源
5. 启用审计日志

## 参考资料

- [Oracle Cloud Infrastructure 文档](https://docs.oracle.com/en-us/iaas/)
- [OCI Terraform Provider](https://registry.terraform.io/providers/oracle/oci/latest/docs)
- [Oracle Cloud 免费层](https://www.oracle.com/cloud/free/)