Provider Terraform
Gérer les ressources SteadyCron avec Terraform — déclarer les jobs HTTP, moniteurs heartbeat, canaux d'alerte et règles d'alerte en HCL aux côtés du reste de l'infrastructure.
Le provider Terraform SteadyCron permet de gérer les cron jobs dans le cadre de la stack d’infrastructure — sans manifestes YAML séparés si vous utilisez déjà Terraform.
Installation
Ajoutez le provider au bloc required_providers et lancez terraform init :
terraform {
required_providers {
steadycron = {
source = "steadycron/steadycron"
version = "1.0.4"
}
}
}
Authentification
Créez une clé API dans le tableau de bord SteadyCron sous Paramètres → Clés API. Une clé
de portée Full est requise pour les opérations d’écriture (apply) ; les sources de données
fonctionnent avec une clé en lecture seule.
Fournissez la clé via une variable d’environnement (recommandé pour la CI) :
export STEADYCRON_API_KEY=sc_...
Ou configurez-la dans le bloc provider :
provider "steadycron" {
api_key = var.steadycron_api_key # évitez de la coder en dur
# endpoint par défaut : https://api.steadycron.com
# peut aussi être défini via STEADYCRON_ENDPOINT
}
Ressources
| Ressource | Description |
|---|---|
steadycron_http_job | Appel HTTPS planifié |
steadycron_heartbeat_monitor | Moniteur de ping attendu avec URL de ping unique |
steadycron_alert_channel | Canal email, Slack, Discord, webhook ou Telegram |
steadycron_alert_rule | Relie un job à un canal avec une condition de déclenchement |
steadycron_tag | Label key=value pour regrouper et filtrer les jobs |
steadycron_template_variable | Espace réservé nommé pour la substitution côté serveur |
Les sources de données (data.steadycron_http_job, data.steadycron_heartbeat_monitor,
data.steadycron_tag, data.steadycron_alert_channel) permettent de référencer des ressources
existantes.
Exemple
provider "steadycron" {
# api_key depuis la variable d'environnement 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" # Lundi 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"
}
Importer des ressources existantes
Placez les ressources existantes créées via le tableau de bord ou la CLI sous la gestion Terraform :
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>
Après l’import, lancez terraform plan. Les champs que l’API masque en lecture (secrets de canal
d’alerte, tokens heartbeat) apparaîtront comme des diffs — ajoutez leurs vraies valeurs à la
configuration.
Interopérabilité avec la CLI
Les ressources créées via Terraform ont un manifest_namespace null et ne sont donc jamais
supprimées par steadycron sync --prune. Gérez une ressource avec Terraform ou le manifeste
CLI, pas les deux — l’utilisation simultanée des deux outils pour la même ressource n’est pas
prise en charge.
Limites de débit
L’API SteadyCron autorise 120 requêtes par minute et par clé. Le provider réessaie automatiquement
les réponses 429 Too Many Requests avec un backoff exponentiel (jusqu’à 5 essais, en respectant
Retry-After). En cas de dépassement régulier, réduisez le parallélisme du provider :
terraform apply -parallelism=5
Liens associés
- Infrastructure as code — approche par manifeste YAML
- Workflow IaC — commandes CLI
- API & authentification — gestion des clés API