> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skanesgalab.my.id/llms.txt
> Use this file to discover all available pages before exploring further.

# Mengimpor Infrastruktur Eksisting (Terraform Import)

> Cara mengimpor server dan resource yang dibuat manual lewat web console ke dalam kode Terraform dan state file, menggunakan blok import (HCL) dan CLI.

## Masalah Nyata: Infrastruktur yang Sudah Terlanjur Dibuat Manual

Di perusahaan tempat kamu bekerja, mungkin sudah ada puluhan server EC2, database RDS, dan firewall yang **dibuat secara manual via klik konsol web AWS bertahun-tahun yang lalu sebelum ada Terraform**.

Apakah kita harus menghapus server produksi tersebut lalu membuatnya ulang dari nol dengan Terraform? **Tentu saja TIDAK!**

Terraform menyediakan kemampuan **`import`** untuk mengambil kepemilikan sumber daya yang sudah ada di cloud dan memasukkannya ke dalam berkas `terraform.tfstate` serta kode `.tf`.

***

## 2 Metode Mengimpor Infrastruktur

```mermaid theme={null}
flowchart LR
    RealCloud["Server Eksisting di AWS\n(ID: i-0987654321)"] --> ImportAction["Proses Import"]
    ImportAction --> State["1. Masuk ke terraform.tfstate"]
    ImportAction --> Code["2. Menghasilkan Blok Kode HCL (.tf)"]
```

***

## Metode 1: Blok Deklaratif `import` (Fitur Modern Terraform 1.5+)

Sejak versi 1.5.0, Terraform memperkenalkan blok deklaratif `import` yang sangat aman dan otomatis menghasilkan blok kode konfigurasi.

### Langkah 1: Tulis Blok Import di `main.tf`

Ketahui ID resource nyata di AWS (misal ID EC2: `i-0987654321`):

```hcl theme={null}
import {
  to = aws_instance.imported_web_server
  id = "i-0987654321"
}
```

### Langkah 2: Generate Kode Konfigurasi Otomatis

Jalankan perintah generate code:

```bash theme={null}
terraform plan -generate-config-out=generated_resources.tf
```

*Terraform akan memeriksa API AWS, lalu secara otomatis menuliskan seluruh konfigurasi detail instance tersebut ke dalam berkas baru bernama `generated_resources.tf`!*

### Langkah 3: Terapkan ke State

```bash theme={null}
terraform apply
```

*Sekarang, server manual tersebut sudah resmi dikelola 100% oleh Terraform tanpa mengalami reboot atau downtime sama sekali!*

***

## Metode 2: Perintah Tradisional CLI (`terraform import`)

Jika kamu menggunakan Terraform versi lama:

### 1. Buat Blok Resource Kosong di `main.tf`

```hcl theme={null}
resource "aws_security_group" "existing_sg" {
  # Biarkan kosong atau isi nama dasar
}
```

### 2. Jalankan Perintah Import dari Terminal

Sintaks: `terraform import <tipe.nama_label> <id_cloud_resmi>`

```bash theme={null}
# Mengimpor Security Group berdasarkan ID-nya:
terraform import aws_security_group.existing_sg sg-0a1b2c3d4e5f

# Mengimpor Bucket S3 berdasarkan namanya:
terraform import aws_s3_bucket.my_bucket nama-bucket-saya-di-aws

# Mengimpor VPC berdasarkan VPC ID:
terraform import aws_vpc.imported_vpc vpc-0123456789abcdef0
```

### 3. Sinkronisasi Kode dengan Status State

Setelah perintah import berhasil, jalankan:

```bash theme={null}
terraform plan
```

Terraform akan membandingkan atribut nyata yang diimpor dengan blok kosong di kodemu. Lengkapi atribut di file `.tf` sampai `terraform plan` menyatakan:

> `No changes. Your infrastructure matches the configuration.`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.