Terraform-Provider
SteadyCron-Ressourcen mit Terraform verwalten — HTTP-Jobs, Heartbeat-Monitore, Alert-Kanäle und Alert-Regeln in HCL zusammen mit der restlichen Infrastruktur deklarieren.
Der SteadyCron-Terraform-Provider ermöglicht es, Cron-Jobs als Teil des Infrastruktur-Stacks zu verwalten — ohne separate YAML-Manifeste, wenn Sie bereits Terraform einsetzen.
Installation
Fügen Sie den Provider dem required_providers-Block hinzu und führen Sie terraform init aus:
terraform {
required_providers {
steadycron = {
source = "steadycron/steadycron"
version = "1.0.4"
}
}
}
Authentifizierung
Erstellen Sie einen API-Schlüssel im SteadyCron-Dashboard unter Einstellungen → API-Schlüssel.
Für Schreiboperationen (apply) ist ein Full-Scope-Schlüssel erforderlich; Datenquellen
funktionieren auch mit einem Nur-Lesen-Schlüssel.
Übergeben Sie den Schlüssel über eine Umgebungsvariable (empfohlen für CI):
export STEADYCRON_API_KEY=sc_...
Oder konfigurieren Sie ihn im Provider-Block:
provider "steadycron" {
api_key = var.steadycron_api_key # nicht hardcoden
# endpoint ist standardmäßig https://api.steadycron.com
# kann auch über STEADYCRON_ENDPOINT gesetzt werden
}
Ressourcen
| Ressource | Beschreibung |
|---|---|
steadycron_http_job | Geplanter HTTPS-Aufruf |
steadycron_heartbeat_monitor | Erwartungs-Ping-Monitor mit eindeutiger Ping-URL |
steadycron_alert_channel | E-Mail-, Slack-, Discord-, Webhook- oder Telegram-Kanal |
steadycron_alert_rule | Verknüpft einen Job mit einem Kanal und einer Auslösebedingung |
steadycron_tag | key=value-Label zur Gruppierung und Filterung von Jobs |
steadycron_template_variable | Benannter Platzhalter für serverseitige Substitution in Job-Feldern |
Datenquellen (data.steadycron_http_job, data.steadycron_heartbeat_monitor,
data.steadycron_tag, data.steadycron_alert_channel) ermöglichen das Referenzieren
bestehender Ressourcen.
Beispiel
provider "steadycron" {
# api_key aus der Umgebungsvariable STEADYCRON_API_KEY
}
resource "steadycron_tag" "env_prod" {
key = "env"
value = "prod"
color = "green"
}
resource "steadycron_alert_channel" "ops_email" {
name = "ops-email"
kind = "email"
email_to = "ops@example.com"
}
resource "steadycron_http_job" "weekly_digest" {
name = "weekly-digest"
method = "POST"
url = "https://api.example.com/jobs/digest"
cron_expression = "0 9 * * 1" # Montag 09:00
timezone = "Europe/Berlin"
timeout_seconds = 120
max_retries = 2
headers = {
Authorization = "Bearer {{digest_token}}"
}
tags = [steadycron_tag.env_prod.id]
}
resource "steadycron_alert_rule" "digest_failure" {
job_id = steadycron_http_job.weekly_digest.id
channel_id = steadycron_alert_channel.ops_email.id
trigger = "on_failure"
severity = "P1"
}
Bestehende Ressourcen importieren
Bringen Sie bestehende Dashboard- oder CLI-erstellte Ressourcen unter Terraform-Verwaltung:
terraform import steadycron_http_job.example <job_id>
terraform import steadycron_heartbeat_monitor.db_backup <job_id>
terraform import steadycron_alert_channel.ops_email <channel_id>
terraform import steadycron_alert_rule.digest_failure <rule_id>
terraform import steadycron_tag.env_prod <tag_id>
terraform import steadycron_template_variable.digest_token <variable_id>
Führen Sie nach dem Import terraform plan aus. Felder, die die API beim Lesen verdeckt
(Alert-Kanal-Secrets, Heartbeat-Tokens), erscheinen als Diffs — fügen Sie deren echte Werte
Ihrer Konfiguration hinzu.
Interoperabilität mit der CLI
Ressourcen, die über Terraform erstellt wurden, haben einen null manifest_namespace und werden
daher niemals durch steadycron sync --prune gelöscht. Verwalten Sie eine Ressource entweder
mit Terraform oder dem CLI-Manifest, nicht mit beiden — das gleichzeitige Nutzen beider Tools
für dieselbe Ressource wird nicht unterstützt.
Rate Limits
Die SteadyCron-API erlaubt 120 Anfragen pro Minute und Schlüssel. Der Provider wiederholt
429 Too Many Requests-Antworten automatisch mit exponentiellem Backoff (bis zu 5 Versuche,
unter Beachtung von Retry-After). Bei regelmäßigen Limitüberschreitungen reduzieren Sie die
Provider-Parallelität:
terraform apply -parallelism=5
Weiterführende Links
- Infrastructure as Code — YAML-Manifest-Ansatz
- IaC-Workflow — CLI-Befehle
- API & Authentifizierung — API-Schlüsselverwaltung