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

Terraform-provider

Met de Elido Terraform-provider - terraform-provider-elido - beheer je shortlinks op dezelfde manier als de rest van je infrastructuur: declaratief, onder versiebeheer, met plan / apply-semantiek en driftdetectie.

De provider is een dunne adapter boven de openbare REST API. Alles wat je in elido_link kunt uitdrukken, kun je ook uitdrukken via de SDK of een curl naar api-core; Terraform geeft je er alleen een stabiel lifecycle- contract bovenop.

Wanneer gebruik je het

  • Marketingredirects horen bij je infrastructuur. Cloudflare DNS, S3-lander, CloudFront-distributie, en de shortlink die naar de lander wijst, staan allemaal in dezelfde Terraform-module. Verwijder de lander → de redirect gaat mee.
  • Bulkcampagnelinks vanuit een sjabloon. Een for_each over kanalen × regio’s levert tientallen consequent getagde links op in één terraform apply.
  • Multi-tenant-onboarding. Als je tenants met Terraform provisioneert, voeg dan een elido_link-resource aan de module toe en elke tenant heeft vanaf dag één zijn eigen gebrande redirects.

Als je enige behoefte is “een link aanmaken vanuit een script”, gebruik dan de Go SDK of een curl. Terraform is voor het geval dat je een lifecycle beheerd wilt hebben.

Status

v0.1.0 MVP, gebouwd vanuit de broncode (zie Installatie). Oppervlak vandaag:

SoortNaamEndpoint
Resourceelido_linkPOST /v1/workspaces/{id}/links (+ PATCH / DELETE)
Resourceelido_custom_domainaanmaken / verwijderen / importeren via de domeinen-API
Databronelido_workspaceGET /v1/workspaces/{id}
Databronelido_custom_domainGET /v1/workspaces/{id}/domains (lokaal gefilterd)

elido_custom_domain registreert het domein en wacht standaard tot de DNS-verificatie slaagt (wait_for_verified, verify_timeout, standaard 10m). Bij een time-out geeft het de verify_token terug, zodat je het ontbrekende TXT-record kunt publiceren. Importeer met <workspace_id>:<domain_id>.

Gepland. De resources elido_folder en elido_api_key zitten nog niet in de provider. De provider is niet gepubliceerd in het Terraform Registry en heeft geen stabiele release. ADR-0034 bevat de volledige lijst met uitgesteld werk.

Installatie

De provider is nog niet gepubliceerd in het Terraform Registry. Tot dat zo is, installeer je via dev_overrides:

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

Voeg daarna een dev_overrides-blok toe aan ~/.terraformrc:

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

Onder dev_overrides is terraform init niet nodig - plan en apply lossen het binaire bestand direct op.

Configureren

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_...
AttribuutEnv-terugvalStandaard
api_urlELIDO_API_URLhttps://api.elido.app
api_tokenELIDO_API_TOKENverplicht

Wijs bij zelf gehost Elido api_url naar je api-core. Tokens worden aangemaakt op /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

De provider koppelt de state aan de numerieke link-id, dus het hernoemen van het Terraform-resourcelabel of het wijzigen van de slug forceert geen vervanging - er wordt een PATCH gestuurd. Het wijzigen van workspace_id of domain_id forceert wel vervanging (de link hoort dan bij een andere edge-route).

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 links, één apply. Verwijder het blok en terraform apply verwijdert ze in één transactie.

Heb je al links die je onder Terraform-beheer wilt brengen? Gebruik het formaat <workspace_id>:<link_id>:

terraform import elido_link.spring_campaign 42:7

Een daaropvolgende terraform plan toont de drift tussen de live link en je HCL - convergeer door ofwel de HCL aan te passen of door apply de HCL-state naar de API te laten pushen.

Referentie

AttribuutTypeVerplichtOpmerkingen
workspace_idnumberjaForceert vervanging bij wijziging.
domain_idnumberjaForceert vervanging bij wijziging.
slugstringneeAutomatisch gegenereerd als leeg.
destination_urlstringja
titlestringnee
tagslistneeVolgorde telt mee in het plan-verschil.
redirect_statusnumbernee301 / 302 / 307 / 308. Standaard 302.
show_splashboolnee
statusstringneeactive, paused, archived. Standaard active.
idstringberekendNumerieke ID, als string opgemaakt voor TF-stabiliteit.
created_atstringberekendRFC3339.
updated_atstringberekendRFC3339.

Databron - elido_custom_domain

Zoek een eigen redirectdomein op hostnaam binnen een workspace. Gebruik de resulterende id als domain_id in elido_link-resources.

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" }
AttribuutTypeVerplichtOpmerkingen
workspace_idnumberjaWorkspace die eigenaar is van het domein.
hostnamestringjaFQDN; wildcards behouden het voorvoegsel *..
idnumberberekendGeef door aan elido_link.domain_id.
statusstringberekendpending, verified, active, failed.
is_wildcardboolberekend
verify_tokenstringberekendGevoelig. Leeg na verificatie.
created_atstringberekend
verified_atstringberekend
failed_atstringberekend
fail_reasonstringberekend

Databron - elido_workspace

AttribuutTypeVerplichtOpmerkingen
idnumberjaZoeksleutel.
namestringberekend
slugstringberekend
plan_tierstringberekendfree, paid, business.
created_atstringberekend
updated_atstringberekend

Waar je issues meldt

Bugs, ontbrekende schema-onderdelen of “ik wil resource X” - open een issue op github.com/elidoapp/elido  met het label area:terraform.