Terraform ile Gyro Bulut sunucusu: sağlayıcı kurulumu ve ilk apply
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.
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
-
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).
-
İzinler:
cloud_read,cloud_write,cloud_order(sunucu açmak için),cloud_delete(sunucu silmek için). -
Anahtarı ortam değişkenine koyun;
.tfdosyasına yazmayın:bashread -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:
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:
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
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:
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.
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_stateveauto_renewdeğişikliği sunucuyu silmeden, yerinde uygulanır.plan,region(ya daproduct_id),image,cycle,ssh_key_idsya dauser_datadeğişikliği sunucuyu silip yeniden oluşturur; bu, yeni bir sipariş ve eski sunucudaki verinin kaybı demektir.plançıktısındamust be replacedgö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.tfdosyasındakiplan'ı 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:
-
main.tfiçine sunucuyu tanımlayan birgyro_serverbloğu yazın (plan,region,imagemevcut sunucuyla aynı olmalı). -
Paneldeki hizmet numarasıyla içe aktarın:
bashterraform import gyro_server.web 47466 -
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?
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:
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.
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
- Sunucunuz hazır: Bulut panel turu ile panelde neler yapabileceğinizi görün.
- Paketler ve fiyatlar: Gyro Bulut Sunucu
Thanks for your feedback!