# Gyro Bulut İstanbul'u API, gyro CLI ve Terraform ile yönetin (tr-ist-1)

https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-bulut-istanbul-api-cli-terraform

- **Bu rehberde ne öğreneceksiniz**: İstanbul bölgesinde sunucuyu API, `gyro` komut satırı ve Terraform ile nasıl oluşturup yöneteceğinizi, bu bölgenin farklarını (cloud-init yok, 10 SSH anahtarı) ve ön ödemeli faturalamanın otomasyona etkisini.
- **Süre**: 12 dakika
- **Kimin için**: Altyapıyı kodla yönetmek isteyen geliştirici ve sistem yöneticileri.
- **Gerekenler**: API anahtarı ([Gyro API ile ilk adım](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-api-ilk-adim)), bakiye ve bir SSH anahtarı. CLI için `gyro` 1.10 ya da üstü ([kurulum](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-cli-kurulum)); Terraform için sağlayıcı 0.9 ya da üstü ([Terraform rehberi](https://www.gyrohosting.com/bilgi-bankasi/makale/terraform-ile-gyro-bulut)).

## 1. İstanbul'un farkları

| Konu | İstanbul (`tr-ist-1`) | Avrupa/ABD bölgeleri |
| --- | --- | --- |
| Faturalama | Ön ödemeli, saatlik (`cycle` ayarı yok sayılır) | Dönemsel (aylık, 3 aylık…) |
| `user_data` (cloud-init) | **422 ile reddedilir** | Desteklenir |
| SSH anahtarı | En çok **10**, sunucu hazır olunca yüklenir | 1, oluşturmada yüklenir |
| İmajlar | `ubuntu-24.04`, `ubuntu-22.04`, `debian-12`, `alma-8` | Bölgeye göre |
| Güç işlemleri | `poweron`, `shutdown`/`poweroff`, `reboot` | + `reset`, rescue |
| Yedek (backup) | Yok; snapshot var | Ürüne göre |
| Metrik | Yok | Var |
| IPv6 | Yok | Bölgeye göre |

Sipariş **bakiyeden** ödenir; bakiye ilk 24 saatlik ücreti karşılamıyorsa sipariş reddedilir ([Bakiye yükleme](https://www.gyrohosting.com/bilgi-bankasi/makale/bakiye-yukleme-ve-ilk-siparis-sarti)).

## 2. gyro CLI ile

```
# Yapılandırma (bir kez): anahtar, Müşteri Paneli > Hesap menüsü > API Kimlik Bilgileri
gyro configure

# İstanbul planları ve imajları
gyro plan list --location tr-ist-1
gyro image list --region tr-ist-1

# SSH anahtarınızı yükleyin
gyro ssh-key create ~/.ssh/id_ed25519.pub --name laptop

# Önce fiyat teklifi: hiçbir şey oluşturulmaz
gyro server create web-1 --plan standart-2-4 --location tr-ist-1 \
  --image ubuntu-24.04 --ssh-key laptop --dry-run

# Sunucuyu oluştur (saatlik fiyatı gösterir, onay ister)
gyro server create web-1 --plan standart-2-4 --location tr-ist-1 \
  --image ubuntu-24.04 --ssh-key laptop --wait

# Bağlan
gyro server ssh web-1

# Güç, snapshot, rDNS, silme
gyro server power reboot web-1
gyro server snapshot create web-1 --wait
gyro server rdns set web-1 --ip 203.0.113.10 --hostname mail.ornekfirma.com
gyro server delete web-1 --yes
```

> **Bilgi**
> 
> Bölge seçeneği `--location` ile verilir; İstanbul için `--location tr-ist-1`. Betiklerde onay sorularını geçmek için `--yes`, çıktıyı makine okumak için `-o json` kullanın. `--user-data` İstanbul'da kabul edilmez.

## 3. REST API ile

Taban adres `https://www.gyrohosting.com/api/v1/client`, kimlik `Authorization: Bearer $GYRO_TOKEN`. Siparişlerde `Idempotency-Key` başlığı zorunludur ve sipariş açık onay (`"confirm": true`) ister.

```
# İstanbul'daki imajlar
curl -s "https://www.gyrohosting.com/api/v1/client/cloud/images?region=tr-ist-1" \
  -H "Authorization: Bearer $GYRO_TOKEN"

# Fiyat teklifi
curl -s -X POST https://www.gyrohosting.com/api/v1/client/cloud/servers \
  -H "Authorization: Bearer $GYRO_TOKEN" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"plan":"standart-2-4","region":"tr-ist-1","image":"ubuntu-24.04","ssh_keys":[12],"hostname":"web-1.ornekfirma.com","dry_run":true}'

# Gerçek sipariş (bakiyeden ödenir)
curl -s -X POST https://www.gyrohosting.com/api/v1/client/cloud/servers \
  -H "Authorization: Bearer $GYRO_TOKEN" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"plan":"standart-2-4","region":"tr-ist-1","image":"ubuntu-24.04","ssh_keys":[12],"hostname":"web-1.ornekfirma.com","confirm":true}'
```

Sunucu ayrıntısında `ssh_keys.state` alanı anahtarlarınızın durumunu gösterir; `installed` olunca anahtarınızla girebilirsiniz. Diğer uçlar: `POST /cloud/servers/{id}/actions` (güç, yeniden kurulum, parola), `POST .../console`, `GET|PUT .../rdns`, `.../snapshots`. Ön ödemeli sunucuda `DELETE /cloud/servers/{id}` her zaman anında iptaldir. Ayrıntılar `/developers` sayfasındaki API başvurusundadır.

## 4. Terraform ile

```
terraform {
  required_providers {
    gyro = {
      source  = "gyro-hosting/gyro"
      version = ">= 0.9"
    }
  }
}

resource "gyro_ssh_key" "laptop" {
  name       = "laptop"
  public_key = file("~/.ssh/id_ed25519.pub")
}

resource "gyro_server" "web" {
  plan          = "standart-2-4"
  region        = "tr-ist-1"
  image         = "ubuntu-24.04"
  hostname      = "web-1.ornekfirma.com"
  ssh_key_ids   = [tonumber(gyro_ssh_key.laptop.id)]
  power_state   = "running"
  confirm_order = true # sipariş bakiyeden ödenir
}

output "web_ipv4" {
  value = gyro_server.web.ipv4
}
```

- İstanbul'da `user_data` kullanmayın (reddedilir); `ssh_key_ids` içinde 10 anahtara kadar verebilirsiniz.
- `cycle` ön ödemeli üründe yok sayılır; Terraform her planda yeniden oluşturma önermez.
- `terraform destroy` hizmeti iptal eder ve ücreti durdurur.

## 5. Otomasyon ipuçları

- CI/CD'de **ayrı bir API anahtarı** kullanın; yalnız gereken izinleri (`cloud_read`, `cloud_write`) işaretleyin ve izinli IP ekleyin.
- Betiğiniz sunucu açıp işi bitince **silmezse** ücret sürer. Geçici ortamlar için bitişte `gyro server delete --yes` ya da `terraform destroy` çalıştırın.
- Harcamayı izlemek için `gyro billing balance get` ve `gyro billing usage list` ([Harcamalar ekranı](https://www.gyrohosting.com/bilgi-bankasi/makale/harcamalar-ekrani-saat-saat-dokum)).

## 6. Sık sorulan sorular

**user_data neden 422 veriyor?**

İstanbul bölgesinde cloud-init desteklenmez. Otomatik kurulum için tek tıkla uygulama kullanın ya da sunucu hazır olunca SSH ile betik çalıştırın.

**Anahtarım yüklenmeden bağlandım, giremiyorum, ne yapmalıyım?**

Anahtarlar sunucu hazır olduktan sonra yüklenir (genellikle birkaç dakika). `GET /cloud/servers/{id}` içindeki `ssh_keys.state` değerinin `installed` olmasını bekleyin.

**Sipariş "bakiye yetersiz" ile reddedildi, ne yapmalıyım?**

İlk 24 saatlik ücret bakiyenizce karşılanmalıdır. `gyro billing topup-url get` bakiye yükleme bağlantısını verir.

## Sıradaki adım

- [gyro CLI kurulumu](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-cli-kurulum) · [Terraform ile Gyro Bulut](https://www.gyrohosting.com/bilgi-bankasi/makale/terraform-ile-gyro-bulut)
- [Gyro Kapsayıcı için API, CLI ve Terraform](https://www.gyrohosting.com/bilgi-bankasi/makale/gyro-kapsayici-api-cli-terraform)
