# VPC ve subnet oluşturma (panel, CLI, API, Terraform)

https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-bulut-istanbul-vpc-subnet-olusturma

- **Bu rehberde ne öğreneceksiniz**: Panelden, komut satırından, API'den ve Terraform'dan VPC ve subnet oluşturmayı; sık görülen hataları.
- **Süre**: 5 dakika
- **Kimin için**: Sistem yöneticileri ve geliştiriciler.
- **Gerekenler**: Gyro hesabı; VPC kavramı için önce [Özel ağ (VPC) nedir?](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-bulut-istanbul-ozel-ag-vpc) rehberine bakın.

## 1. Panelden

1. **Gyro Konsol → Özel ağlar (VPC)** bölümünü açın (ya da bir sunucunun hizmet sayfasında **Özel ağ (VPC)** aracına girin).
2. **VPC oluştur**'a basın. **Ad** (ör. `uretim`) ve **IP aralığı** yazın (öneri: `10.10.0.0/16`). Aralık, ileride kullanacağınız başka VPC'lerle çakışmasın.
3. İlk subnet için ad (ör. `uygulama`) ve boyut seçin (**/24 önerilir**, 251 kullanılabilir adres). Boş bırakırsanız `default` adlı /24 bir subnet açılır.
4. **Oluştur**'a basın. VPC birkaç saniyede hazır olur.

İkinci subnet için VPC'yi açıp **Subnet ekle**'yi kullanın (ör. `veritabani`, `10.10.2.0/24`).

> **Bilgi**
> 
> CIDR alanına ağ adresini yazın (`10.10.1.0/24`). `10.10.1.5/24` gibi bir sunucu adresi yazarsanız hata alırsınız.

## 2. gyro komut satırı

```
gyro vpc create --name uretim --cidr 10.10.0.0/16
gyro vpc subnet create <vpc-id> --name veritabani --cidr 10.10.2.0/24
gyro vpc list
gyro vpc get <vpc-id>
gyro vpc subnet list <vpc-id>
```

Silmek için (bağlı sunucu kartı ya da port yönlendirme varsa önce onları kaldırın; her VPC'de en az bir subnet kalır):

```
gyro vpc subnet delete <vpc-id> <subnet-id>
gyro vpc delete <vpc-id>
```

## 3. API

```
curl -X POST https://www.gyrohosting.com/api/v1/client/cloud/vpcs \
  -H "Authorization: Bearer $GYRO_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"uretim","cidr":"10.10.0.0/16","subnet":{"name":"uygulama","cidr":"10.10.1.0/24"}}'

curl -X POST https://www.gyrohosting.com/api/v1/client/cloud/vpcs/<vpc-id>/subnets \
  -H "Authorization: Bearer $GYRO_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"veritabani","cidr":"10.10.2.0/24"}'
```

`cidr` yazmazsanız `prefix` ile (varsayılan 24) boş bir aralık önerilir. Okuma: `GET /cloud/vpcs` (sınırlarınız ve kapı ücreti de döner), `GET /cloud/vpcs/{id}`.

## 4. Terraform

```
resource "gyro_vpc" "ana" {
  name = "uretim"
  cidr = "10.10.0.0/16"
}

resource "gyro_subnet" "veritabani" {
  vpc_id = gyro_vpc.ana.id
  name   = "veritabani"
  cidr   = "10.10.2.0/24"
}
```

VPC, API'nin açtığı ilk subnet (`default`) ile gelir; kimliği `default_subnet_id` çıktısındadır. Mevcut nesneleri `terraform import` ile alabilirsiniz (`gyro_vpc` = kimlik, `gyro_subnet` = `<vpc-id>/<subnet-id>`).

## 5. Sık görülen hatalar

| Hata | Anlamı |
| --- | --- |
| `reserved_range` | Bu aralık platforma ayrılmış (`10.200/16`, `10.42/16` gibi); başka aralık seçin. |
| `invalid_cidr` | Boyut ya da biçim hatalı: VPC /16-/24, subnet /20-/28; ağ adresi yazın. |
| `cidr_overlap` | Aynı VPC'deki iki subnet aynı adresleri kapsayamaz. |
| `limit_exceeded` / `vpc_full` | VPC ya da subnet sınırına ulaştınız; gerekirse destek talebi açın. |
| `name_taken` | Aynı adda başka nesneniz var. |
| `vpc_in_use` / `subnet_in_use` | Silmek istediğiniz VPC/subnet'e bağlı sunucu kartı var; önce kartları çıkarın. |
| `last_subnet` | Bir VPC'nin son subnet'i silinemez. |
| `capacity` | Özel ağ kapasitesi şu an dolu; birkaç dakika sonra deneyin ya da destek talebi açın. |

## Sıradaki adım

- [Sunucuyu özel ağa bağlama](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-bulut-istanbul-sunucuyu-ozel-aga-baglama)
- [Public IP'yi kapatma](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-bulut-istanbul-public-ip-kapatma)
