# Terraform OCI - Importação de Recursos

## Visão Geral

Este documento explica como importar recursos OCI criados manualmente (via console/CLI) para o Terraform.

## Por que Importar?

Recursos criados fora do Terraform podem ser gerenciados posteriormente com Terraform através da importação.

## Como Importar Recursos

### 1. Import via CLI

```bash
# Buckets
terraform import oci_objectstorage_bucket.bucket "compartment-ocid/bucket-name"

# API Gateway
terraform import oci_apigateway_gateway.gateway "gateway-ocid"

# API Gateway Deployment
terraform import oci_apigateway_deployment.deployment "gateway-ocid/deployment-ocid"

# VCN
terraform import oci_core_vcn.vcn "vcn-ocid"

# Subnet
terraform import oci_core_subnet.subnet "subnet-ocid"

# OKE Cluster
terraform import oci_containerengine_cluster.cluster "cluster-ocid"

# Load Balancer
terraform import oci_load_balancer_loadbalancer.lb "lb-ocid"
```

### 2. Estrutura do Código Terraform

#### Bucket

```hcl
resource "oci_objectstorage_bucket" "nexus_mfe_user_dev" {
  # ID no formato: compartment-ocid/bucket-name
  bucket_name      = "nexus-mfe-user-dev"
  compartment_id   = var.compartment_id
  namespace        = "grbb7qzeuoag"  # namespace OCI
  
  storage_tier = "Standard"
  
  # metadata = {}
}
```

#### API Gateway

```hcl
resource "oci_apigateway_gateway" "mfe_user_gateway" {
  compartment_id = var.compartment_id
  endpoint_type  = "PUBLIC"
  subnet_id      = var.subnet_id
  
  display_name = "nexus-mfe-user-gateway"
  
  # certificate_id - opcional
  
  timeouts {
    create = "30m"
    update = "30m"
    delete = "30m"
  }
}
```

#### API Gateway Deployment

```hcl
resource "oci_apigateway_deployment" "mfe_user_deployment" {
  gateway_id = oci_apigateway_gateway.mfe_user_gateway.id
  
  display_name = "nexus-mfe-user-deployment"
  path_prefix  = "/"
  
  specification = jsonencode({
    routes = [
      {
        path   = "/{req.*}"
        methods = ["GET"]
        backend = {
          type = "HTTP"
          url  = "https://namespace.objectstorage.region.oci.customer-oci.com/n/namespace/b/bucket/o"
        }
      }
    ]
  })
}
```

## Pipeline de Import

Para importar recursos automaticamente via Azure DevOps:

```yaml
# azure-pipelines-import.yml
trigger: none

parameters:
  - name: resourceType
    type: string
    displayName: Tipo de recurso
    values:
      - bucket
      - api-gateway
      - subnet

variables:
  - group: oci-terraform

stages:
  - stage: Import_Resource
    jobs:
      - job: Import
        pool:
          vmImage: ubuntu-latest
        steps:
          - task: Terraform@1
            inputs:
              provider: 'oci'
              command: 'custom'
              customCommand: 'import'
              # Resource address no TF
              resourceAddress: 'oci_objectstorage_bucket.bucket_name'
              # ID do recurso no OCI
              resourceId: '$(COMPARTMENT_ID)/bucket-name'
```

## Recursos que Podem Ser Importados

### Object Storage

| Recurso | Terraform Resource |
|---------|------------------|
| Bucket | `oci_objectstorage_bucket` |
| Object | `oci_objectstorage_object` |
| Pre-Auth Request | Não suportado (criar via pipeline) |

### API Gateway

| Recurso | Terraform Resource |
|---------|------------------|
| Gateway | `oci_apigateway_gateway` |
| Deployment | `oci_apigateway_deployment` |

### Networking

| Recurso | Terraform Resource |
|---------|------------------|
| VCN | `oci_core_vcn` |
| Subnet | `oci_core_subnet` |
| Security List | `oci_core_security_list` |
| Route Table | `oci_core_route_table` |
| Internet Gateway | `oci_core_internet_gateway` |
| NAT Gateway | `oci_core_nat_gateway` |

### Container Engine (OKE)

| Recurso | Terraform Resource |
|---------|------------------|
| Cluster | `oci_containerengine_cluster` |
| Node Pool | `oci_containerengine_node_pool` |

## Checklist de Importação

- [ ] Identificar recursos criados manualmente
- [ ] Criar código Terraform para o recurso
- [ ] Executar `terraform import`
- [ ] Executar `terraform plan` para validar
- [ ] Commit no repositório Terraform

## Referências

- [Terraform OCI Provider](https://registry.terraform.io/providers/hashicorp/oci/latest)
- [OCI CLI Import](https://docs.oracle.com/en-us/iaas/Content/Terraform/tf_import.htm)
