İçeriğe geç
0850 554 5439 [email protected]

Size nasıl yardımcı olabiliriz?

Rehberlerimizde ve eğitimlerimizde arama yapın ya da aşağıdaki kategorilere göz atın.

Terraform ile Gyro Bulut sunucusu: sağlayıcı kurulumu ve ilk apply

Geliştiriciler: API, CLI, Terraform 71 görüntülenme Kullanım rehberi Son doğrulama: Markdown
Bu rehberde ne öğreneceksinizGyro Terraform sağlayıcısını kurmayı, API anahtarını güvenle vermeyi, bir SSH anahtarı ve bir bulut sunucuyu kodla tanımlamayı, plan ve apply ile oluşturmayı, panelden açtığınız sunucuyu Terraform'a almayı ve destroy'un ne yaptığını.
Süre15 dakika (sunucunun hazırlanması genellikle 1-2 dakika)
Kimin içinAltyapısını kodla tanımlamak ve sürüm kontrolünde tutmak isteyen geliştiriciler ve DevOps ekipleri.
GerekenlerTerraform 1.x, Gyro API anahtarı (cloud_read, cloud_write, cloud_order, cloud_delete izinleriyle), hesapta sipariş tutarını karşılayacak bakiye, bir SSH açık anahtarı.

1. Sağlayıcı hakkında

Gyro'nun resmi Terraform sağlayıcısı Terraform Registry'de gyro-hosting/gyro adıyla yayındadır (bu rehber yazılırken sürüm 0.2.1). Gyro Public API'yi kullanır; panelde yaptığınız işleri kodla tanımlamanızı sağlar.

Tür Adlar
Kaynaklar (resource) gyro_server, gyro_ssh_key, gyro_domain_record, gyro_mail_mailbox, gyro_mail_alias, gyro_storage_bucket, gyro_storage_key, gyro_app_install, gyro_webhook, gyro_api_key, gyro_reseller_customer
Veri kaynakları (data source) gyro_products, gyro_locations, gyro_images, gyro_services

Bu rehber bulut sunucu üzerinden temel akışı anlatır; diğer kaynakların belgeleri Registry sayfasında.

Dikkat

gyro_server oluşturmak gerçek bir sipariştir ve hesap bakiyenizden ödenir. Bu yüzden kaynakta confirm_order = true yazmak zorunludur; yazmazsanız Terraform sunucu oluşturmaz.

2. API anahtarını hazırlama

  1. Müşteri panelinde hesap menüsünden API Kimlik Bilgileri'ni açın ve Terraform için ayrı bir anahtar oluşturun (Gyro API'ye ilk adım).

  2. İzinler: cloud_read, cloud_write, cloud_order (sunucu açmak için), cloud_delete (sunucu silmek için).

  3. Anahtarı ortam değişkenine koyun; .tf dosyasına yazmayın:

    bash
    read -rs GYRO_TOKEN && export GYRO_TOKEN
    

Sağlayıcı anahtarı GYRO_TOKEN değişkeninden okur. CI'da (GitHub Actions, GitLab CI) aynı adı taşıyan bir gizli değişken tanımlayın.

3. Yapılandırma dosyası

Boş bir klasörde main.tf oluşturun:

hcl
terraform {
  required_providers {
    gyro = {
      source  = "gyro-hosting/gyro"
      version = "~> 0.3"
    }
  }
}

# Anahtarı GYRO_TOKEN ortam değişkeninden okur.
provider "gyro" {}

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

resource "gyro_server" "web" {
  plan          = "standart-2-4"     # Gyro Bulut Standart 2 vCPU / 4 GB
  region        = "eu-de-1"          # Almanya (Falkenstein)
  cycle         = "monthly"
  image         = "ubuntu-24.04"
  hostname      = "web-1.ornekfirma.com"
  ssh_key_ids   = [tonumber(gyro_ssh_key.laptop.id)]
  power_state   = "running"
  confirm_order = true               # sunucu oluşturmak bakiyeden ödenen bir siparişdir
}

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

Hangi plan ve region?

plan paketi (ör. standart-2-4), region lokasyonu belirler. Bölgeler: eu-de-1 Falkenstein, eu-de-2 Nürnberg, eu-fi-1 Helsinki, us-east-1 Ashburn, us-west-1 Hillsboro, ap-sg-1 Singapur. İsterseniz plan+region yerine tek bir ürün numarası da verebilirsiniz (product_id; sitede paketin Başlayın düğmesinin açtığı sipariş adresindeki sayı, ör. …/siparis/server/814).

Sürüm 0.2 kullanıyorsanız: 0.3'e geçmek mevcut sunucuları yeniden oluşturmaz. Eski server_type/location alanları çalışır ama uyarı verir; yeni yapılandırmalarda plan/region kullanın.

Tüm satıştaki paketleri Terraform'dan da listeleyebilirsiniz. Şu bloğu ekleyip terraform plan çalıştırın:

hcl
data "gyro_locations" "tum" {}

data "gyro_products" "tum" {
  available_only = true
}

locals {
  sehir = { for l in data.gyro_locations.tum.locations : l.region => l.city }
}

output "paketler" {
  value = [for p in data.gyro_products.tum.products :
    "${p.plan}  ${p.region}  ${local.sehir[p.region]}  ${p.monthly_price} ${p.currency}"]
}

Çıktı her paketi plan adı, bölgesi, şehri ve aylık fiyatıyla verir; istediğinizi plan ve region'a yazın.

gyro_server alanları

Alan Zorunlu Açıklama
plan + region evet* Paket ve lokasyon (*ya da tek başına product_id)
image evet İşletim sistemi, ör. ubuntu-24.04, debian-12; liste için gyro_images
confirm_order evet true olmalı
cycle hayır monthly (varsayılan), quarterly, semiannually, annually
hostname hayır Sunucu adı (tam alan adı biçiminde)
ssh_key_ids hayır gyro_ssh_key kimlikleri (şu an oluştururken en çok 1)
user_data hayır cloud-init betiği (en çok 32 KB)
power_state hayır running ya da stopped
auto_renew hayır Hizmeti otomatik yenileme
delete_immediately hayır terraform destroy davranışı (Bölüm 6)

Okunabilen alanlar: id (paneldeki hizmet numarası), ipv4, ipv6_network, cores, memory_gb, disk_gb, status, price, currency, due_date.

4. plan ve apply

bash
terraform init      # sağlayıcıyı indirir
terraform plan      # ne yapılacağını gösterir, hiçbir şey oluşturmaz
terraform apply     # onayınızdan sonra siparişi verir ve sunucu hazır olana kadar bekler

apply sırasında Terraform sunucunun durumunu belirli aralıklarla sorgular; sunucu çalışır hale gelince IP adresini çıktı olarak verir:

text
Outputs:
web_ipv4 = "203.0.113.10"

Ardından ssh [email protected] ile bağlanabilirsiniz. Sunucu müşteri panelinde de Hizmetlerim altında görünür.

Bilgi

Bekleme süresini sağlayıcı ayarlarıyla değiştirebilirsiniz: poll_interval_seconds (varsayılan 5) ve poll_timeout_minutes (varsayılan 15).

Değişiklik yapmak

  • hostname, power_state ve auto_renew değişikliği sunucuyu silmeden, yerinde uygulanır.
  • plan, region (ya da product_id), image, cycle, ssh_key_ids ya da user_data değişikliği sunucuyu silip yeniden oluşturur; bu, yeni bir sipariş ve eski sunucudaki verinin kaybı demektir. plan çıktısında must be replaced görürseniz durun ve kontrol edin.
  • Paketi verinizi koruyarak büyütmek için plan'ı değiştirmeyin; panelden Yükseltme/Düşürme sekmesini kullanın, ardından .tf dosyasındaki plan'ı yeni paketle güncelleyin.

5. Panelden açtığınız sunucuyu Terraform'a almak

Var olan bir sunucuyu yeniden oluşturmadan Terraform yönetimine alabilirsiniz:

  1. main.tf içine sunucuyu tanımlayan bir gyro_server bloğu yazın (plan, region, image mevcut sunucuyla aynı olmalı).

  2. Paneldeki hizmet numarasıyla içe aktarın:

    bash
    terraform import gyro_server.web 47466
    
  3. terraform plan çalıştırın; değişiklik görünmüyorsa tanım ve sunucu eşleşmiştir.

SSH anahtarları da aynı yolla alınır: terraform import gyro_ssh_key.laptop <anahtar-no>.

6. destroy ne yapar?

Dikkat

Varsayılan olarak terraform destroy sunucuyu hemen iptal eder: faturalama durur, sunucu kapatılır ve bekleme süresi (3 gün) sonunda tüm verisiyle kalıcı olarak silinir.

Hemen iptal yerine bir iptal talebi açılmasını istiyorsanız kaynağa delete_immediately = false ekleyin; bu durumda talep işlenene kadar sunucu çalışmaya ve faturalanmaya devam eder.

Üretim sunucularını yanlışlıkla silmemek için Terraform'un kendi korumasını kullanın:

hcl
resource "gyro_server" "db" {
  # ...
  lifecycle {
    prevent_destroy = true
  }
}

7. Sorun giderme

Belirti Olası neden Çözüm
Missing API key / missing_token GYRO_TOKEN tanımlı değil export GYRO_TOKEN=… (ya da CI gizli değişkeni)
insufficient_scope Anahtarda cloud_order ya da cloud_delete yok Anahtarı düzenleyip izni ekleyin
insufficient_balance Bakiye sipariş tutarını karşılamıyor Bakiye yükleyin, apply'ı tekrarlayın
confirm_required confirm_order = true yazılmamış Kaynağa ekleyin
product_not_orderable Paket o an satışta değil ya da numara yanlış gyro_products çıktısından güncel bir numara seçin
server_locked Sunucuda süren bir işlem var Birkaç dakika bekleyip tekrar apply
ip_not_allowed Anahtar IP ile kısıtlı, CI başka IP'den bağlanıyor CI'ın çıkış IP'sini anahtarın izinli listesine ekleyin
ssh_key_exists (409) Aynı açık anahtar hesabınızda zaten kayıtlı Kayıtlı anahtarı terraform import gyro_ssh_key.<ad> <anahtar-no> ile alın; aynı gyro_ssh_key kimliğini birden fazla sunucuda kullanabilirsiniz

8. Sık sorulan sorular

Terraform state dosyamda gizli bilgi olur mu?

user_data gibi alanlar hassas olarak işaretlidir ve ekranda gösterilmez, ancak state dosyasına yazılır. State'i herkese açık bir depoda tutmayın; uzak ve şifreli bir arka uç (backend) kullanın.

Sunucu oluşturma ne kadar sürer?

Sipariş ve ödeme saniyeler içinde, kurulum genellikle 1-2 dakika sürer. apply sunucu çalışır hale gelene kadar bekler.

Aynı yapılandırmayla birden çok sunucu açabilir miyim?

Evet, count ya da for_each ile. Her sunucu ayrı bir siparişdir ve bakiyenizden ödenir; önce plan ile kaç kaynak oluşacağını kontrol edin.

Türkiye VDS sunucularını Terraform ile açabilir miyim?

Bu sürümde gyro_server Gyro Bulut sunucuları içindir. Diğer hizmetlerinizi gyro_services veri kaynağıyla okuyabilirsiniz.

Sağlayıcı kaynak kodu nerede?

Açık kaynaklıdır (MPL-2.0): github.com/Gyro-Hosting/terraform-provider-gyro. Hata ve öneri bildirimi için depodaki "Issues" bölümünü kullanabilirsiniz.

Biliyor muydunuz?

Tek seferlik işler için Terraform yerine gyro CLI daha hızlıdır: gyro server list, gyro server snapshot create <no>. Kurulum için gyro CLI kurulumu ve ilk komutlar.

Sıradaki adım

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.