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

Provider Terraform

Providerul Terraform Elido - terraform-provider-elido - îți permite să gestionezi link-urile scurte în același fel ca restul infrastructurii: declarativ, în controlul versiunilor, cu semantică plan / apply și detectarea drift-ului.

Providerul este un adaptor subțire peste API-ul REST public. Orice poți exprima în elido_link poți exprima și prin SDK sau printr-un curl către api-core; Terraform îți oferă doar un contract stabil de ciclu de viață deasupra.

Când să-l folosești

  • Redirecționările de marketing aparțin infrastructurii tale. DNS Cloudflare, landing-ul S3, distribuția CloudFront, și link-ul scurt care trimite spre landing trăiesc toate în același modul Terraform. Ștergi landing-ul → redirecționarea dispare odată cu el.
  • Link-uri de campanie în masă dintr-un șablon. Un for_each peste canale × regiuni produce zeci de link-uri etichetate consecvent într-un singur terraform apply.
  • Onboarding multi-tenant. Dacă provizionezi tenanți cu Terraform, adaugă o resursă elido_link în modul și fiecare tenant are redirecționările lui de brand din prima zi.

Dacă singura ta nevoie este “creează un link dintr-un script”, folosește SDK-ul Go sau un curl. Terraform este pentru cazul în care vrei ca un ciclu de viață să fie gestionat.

Status

v0.1.0 MVP, compilat din sursă (vezi Instalare). Suprafața de astăzi:

TipNumeEndpoint
Resourceelido_linkPOST /v1/workspaces/{id}/links (+ PATCH / DELETE)
Resourceelido_custom_domaincreare / ștergere / import prin API-ul de domenii
Sursă dateelido_workspaceGET /v1/workspaces/{id}
Sursă dateelido_custom_domainGET /v1/workspaces/{id}/domains (filtrat local)

elido_custom_domain înregistrează domeniul și, implicit, așteaptă până trece verificarea DNS (wait_for_verified, verify_timeout, implicit 10m). La expirarea timpului returnează verify_token, ca să poți publica înregistrarea TXT lipsă. Importă cu <workspace_id>:<domain_id>.

Planificat. Resursele elido_folder și elido_api_key nu sunt încă în provider. Providerul nu este publicat în Terraform Registry și nu are o versiune stabilă. ADR-0034 conține lista completă a lucrărilor amânate.

Instalare

Providerul nu este încă publicat în Terraform Registry. Până când va fi, instalează prin dev_overrides:

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

Apoi adaugă un bloc dev_overrides în ~/.terraformrc:

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

Cu dev_overrides, terraform init nu este necesar - plan și apply rezolvă direct binarul.

Configurare

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_...
AtributValoare env alternativăImplicit
api_urlELIDO_API_URLhttps://api.elido.app
api_tokenELIDO_API_TOKENobligatoriu

Pentru Elido găzduit local, indică api_url spre api-core. Token-urile se creează la /dashboard/settings/api-keys.

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

Providerul indexează state-ul după id-ul numeric al link-ului, deci redenumirea eticheta resursei Terraform sau schimbarea slug-ului nu forțează înlocuirea - se trimite un PATCH. Schimbarea workspace_id sau domain_id forțează însă înlocuirea (link-ul aparține unei alte rute edge).

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 de link-uri, un singur apply. Șterge blocul și terraform apply le elimină într-o singură tranzacție.

Ai deja link-uri pe care vrei să le pui sub gestiunea Terraform? Folosește formatul <workspace_id>:<link_id>:

terraform import elido_link.spring_campaign 42:7

Un terraform plan ulterior arată drift-ul dintre link-ul live și HCL-ul tău - converge fie actualizând HCL-ul, fie lăsând apply să împingă starea HCL către API.

Referință

AtributTypeObligatoriuNote
workspace_idnumberdaForțează înlocuirea la modificare.
domain_idnumberdaForțează înlocuirea la modificare.
slugstringnuGenerat automat când este gol.
destination_urlstringda
titlestringnu
tagslistnuOrdinea contează în diferența de plan.
redirect_statusnumbernu301 / 302 / 307 / 308. Implicit 302.
show_splashboolnu
statusstringnuactive, paused, archived. Implicit active.
idstringcalculatID numeric, formatat ca string pentru stabilitate TF.
created_atstringcalculatRFC3339.
updated_atstringcalculatRFC3339.

Sursă de date - elido_custom_domain

Caută un domeniu personalizat de redirecționare după hostname în cadrul unui workspace. Folosește id-ul rezultat ca domain_id în resursele elido_link.

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" }
AtributTypeObligatoriuNote
workspace_idnumberdaWorkspace-ul care deține domeniul.
hostnamestringdaFQDN; wildcard-urile păstrează prefixul *..
idnumbercalculatTransmite-l la elido_link.domain_id.
statusstringcalculatpending, verified, active, failed.
is_wildcardboolcalculat
verify_tokenstringcalculatSensibil. Gol după verificare.
created_atstringcalculat
verified_atstringcalculat
failed_atstringcalculat
fail_reasonstringcalculat

Sursă de date - elido_workspace

AtributTypeObligatoriuNote
idnumberdaCheie de căutare.
namestringcalculat
slugstringcalculat
plan_tierstringcalculatfree, paid, business.
created_atstringcalculat
updated_atstringcalculat

Unde raportezi probleme

Bug-uri, lacune în schemă sau “vreau resursa X” - deschide un issue la github.com/elidoapp/elido  cu eticheta area:terraform.