Skip to Content
Elido is in closed beta — APIs are stable but rate-limits and quotas may change before GA. Request access →
KılavuzlarTerraform provider

Terraform sağlayıcısı

Elido Terraform sağlayıcısı terraform-provider-elido, kısa bağlantıları altyapınızın geri kalanını yönettiğiniz gibi yönetmenizi sağlar: bildirimsel olarak, sürüm kontrolünde, plan / apply semantiği ve sapma (drift) tespitiyle.

Sağlayıcı, herkese açık REST API’nin üzerinde ince bir bağdaştırıcıdır. elido_link ile ifade edebildiğiniz her şeyi SDK ile ya da api-core’a bir curl ile de ifade edebilirsiniz; Terraform yalnızca bunun üzerine kararlı bir yaşam döngüsü sözleşmesi ekler.

Ne zaman kullanılır

  • Pazarlama yönlendirmeleri altyapınızla birlikte durur. Cloudflare DNS, S3 açılış sayfası, CloudFront dağıtımı ve açılış sayfasına işaret eden kısa bağlantı aynı Terraform modülünde yaşar. Açılış sayfasını silerseniz yönlendirme de onunla gider.
  • Şablondan toplu kampanya bağlantıları. Kanallar × bölgeler üzerinde bir for_each, tek bir terraform apply ile tutarlı etiketlenmiş onlarca bağlantı üretir.
  • Çok kiracılı (multi-tenant) onboarding. Kiracıları Terraform ile hazırlıyorsanız modüle bir elido_link kaynağı ekleyin; her kiracı ilk günden markalı yönlendirmelerine sahip olur.

Tek ihtiyacınız “bir betikten bir bağlantı oluşturmak” ise Go SDK’ya ya da bir curl’e başvurun. Terraform, bir yaşam döngüsünün yönetilmesini istediğiniz durumlar içindir.

Durum

v0.1.0 MVP, kaynaktan derlenir (bkz. Kurulum). Bugünkü yüzey:

TürAdUç nokta
Kaynakelido_linkPOST /v1/workspaces/{id}/links (+ PATCH / DELETE)
Kaynakelido_custom_domainalan adları API’si üzerinden oluştur / sil / içe aktar
Veri kaynağıelido_workspaceGET /v1/workspaces/{id}
Veri kaynağıelido_custom_domainGET /v1/workspaces/{id}/domains (yerelde filtrelenir)

elido_custom_domain alan adını kaydeder ve varsayılan olarak DNS doğrulaması geçene kadar bekler (wait_for_verified, verify_timeout, varsayılan 10m). Zaman aşımında verify_token döndürür; böylece eksik TXT kaydını yayınlayabilirsiniz. <workspace_id>:<domain_id> ile içe aktarın.

Planlandı. elido_folder ve elido_api_key kaynakları henüz sağlayıcıda yok. Sağlayıcı Terraform Registry’de yayınlanmamıştır ve kararlı bir sürümü yoktur. Ertelenen işlerin tam listesi ADR-0034’tedir.

Kurulum

Sağlayıcı henüz Terraform Registry’de yayınlanmadı. Yayınlanana kadar dev_overrides ile kurun:

git clone https://github.com/elidoapp/elido.git cd elido/tools/terraform-provider-elido make install-local

Ardından ~/.terraformrc dosyasına bir dev_overrides bloğu ekleyin:

provider_installation { dev_overrides { "elidoapp/elido" = "/Users/<you>/.terraform.d/plugins/elidoapp/elido" } direct {} }

dev_overrides altında terraform init gerekmez; plan ve apply ikili dosyayı doğrudan çözümler.

Yapılandırma

terraform { required_providers { elido = { source = "elidoapp/elido" version = "~> 0.1" } } } provider "elido" { # api_url defaults to https://api.elido.app # api_token reads ELIDO_API_TOKEN }
export ELIDO_API_TOKEN=ek_...
ÖznitelikOrtam değişkeni yedeğiVarsayılan
api_urlELIDO_API_URLhttps://api.elido.app
api_tokenELIDO_API_TOKENzorunlu

Kendi barındırdığınız Elido için api_url’yi kendi api-core’unuza yöneltin. Token’lar /dashboard/settings/api-keys altında oluşturulur.

İlk bağlantınız

data "elido_workspace" "main" { id = 42 } resource "elido_link" "spring_campaign" { workspace_id = data.elido_workspace.main.id domain_id = 1 slug = "spring-2026" destination_url = "https://example.com/landing/spring" title = "Spring 2026 email campaign" tags = ["spring-2026", "email"] redirect_status = 301 }
terraform plan terraform apply

Sağlayıcı durumu sayısal bağlantı id’siyle tutar; bu yüzden Terraform kaynak etiketini yeniden adlandırmak veya slug’ı değiştirmek yeniden oluşturmayı zorlamaz (bir PATCH gönderir). workspace_id veya domain_id değişikliği ise yeniden oluşturmayı zorlar (bağlantı farklı bir edge rotasına ait olur).

Toplu bağlantılar

locals { channels = ["email", "twitter", "linkedin", "reddit", "hn"] regions = ["us", "eu", "apac", "latam"] } resource "elido_link" "campaign_launch" { for_each = { for pair in setproduct(local.channels, local.regions) : "${pair[0]}-${pair[1]}" => pair } workspace_id = data.elido_workspace.main.id domain_id = 1 slug = "launch-${each.key}" destination_url = "https://example.com/launch?ch=${each.value[0]}&r=${each.value[1]}" tags = ["launch-2026", each.value[0], each.value[1]] }

20 bağlantı, tek bir apply. Bloğu silip terraform apply çalıştırırsanız hepsi tek bir işlemde kaldırılır.

Mevcut bağlantıları içe aktarma

Terraform yönetimi altına almak istediğiniz bağlantılar zaten var mı? <workspace_id>:<link_id> biçimini kullanın:

terraform import elido_link.spring_campaign 42:7

Sonraki bir terraform plan, canlı bağlantı ile HCL’niz arasındaki sapmayı gösterir; HCL’yi eşleşecek şekilde güncelleyerek ya da apply’ın HCL durumunuzu API’ye itmesine izin vererek birleştirin.

Başvuru

ÖznitelikTürZorunluNotlar
workspace_idnumberevetDeğişirse yeniden oluşturmayı zorlar.
domain_idnumberevetDeğişirse yeniden oluşturmayı zorlar.
slugstringhayırBoşsa otomatik üretilir.
destination_urlstringevet
titlestringhayır
tagslisthayırPlan farkında sıra önemlidir.
redirect_statusnumberhayır301 / 302 / 307 / 308. Varsayılan 302.
show_splashboolhayır
statusstringhayıractive, paused, archived. Varsayılan active.
idstringhesaplananSayısal kimlik; TF kararlılığı için dize olarak biçimlendirilir.
created_atstringhesaplananRFC3339.
updated_atstringhesaplananRFC3339.

Veri kaynağı: elido_custom_domain

Bir çalışma alanı içinde ana bilgisayar adına göre özel bir yönlendirme alan adı arayın. Sonuçtaki id’yi elido_link kaynaklarında domain_id olarak kullanın.

data "elido_custom_domain" "links" { workspace_id = data.elido_workspace.main.id hostname = "links.example.com" } resource "elido_link" "spring_campaign" { workspace_id = data.elido_workspace.main.id domain_id = data.elido_custom_domain.links.id destination_url = "https://example.com/landing/spring" slug = "spring-2026" }
ÖznitelikTürZorunluNotlar
workspace_idnumberevetAlan adına sahip çalışma alanı.
hostnamestringevetFQDN; joker karakterler *. önekini korur.
idnumberhesaplananelido_link.domain_id’ye iletin.
statusstringhesaplananpending, verified, active, failed.
is_wildcardboolhesaplanan
verify_tokenstringhesaplananHassas. Doğrulamadan sonra boştur.
created_atstringhesaplanan
verified_atstringhesaplanan
failed_atstringhesaplanan
fail_reasonstringhesaplanan

Veri kaynağı: elido_workspace

ÖznitelikTürZorunluNotlar
idnumberevetArama anahtarı.
namestringhesaplanan
slugstringhesaplanan
plan_tierstringhesaplananfree, paid, business.
created_atstringhesaplanan
updated_atstringhesaplanan

Sorunları nereye bildirmeli

Hatalar, şema eksikleri veya “X kaynağını istiyorum” talepleri için github.com/elidoapp/elido  adresinde area:terraform etiketiyle bir issue açın.