---
title: "Terraform & OpenTofu"
description: "Monitore, Incident Management, Statusseiten und Nutzer als Code verwalten: der Uptimeify-Provider für OpenTofu und Terraform."
---

Dein Monitoring als Code. Monitore, Incident Management, Statusseiten und Nutzer liegen direkt neben der Infrastruktur, die sie überwachen: gleicher Pull-Request-Review, gleicher Rollout für jeden Kunden. Abweichungen zeigt der nächste `plan`, nicht der nächste Ausfall.

Der Provider `uptimeify/uptimeify` läuft mit **OpenTofu 1.11+** und **Terraform 1.11+**. Jede Ressource ist per Akzeptanztest gegen eine echte Uptimeify-Instanz geprüft.

<Cards>
  <Card title="Erste Schritte" href="/de/terraform/getting-started">Provider installieren, ersten Monitor anlegen.</Card>
  <Card title="Kunden-Token" href="/de/terraform/customer-tokens">Eine Konfiguration je Kunde, mit eigenem Token.</Card>
  <Card title="Bestand importieren" href="/de/terraform/import">Im Dashboard angelegte Monitore in Code überführen.</Card>
  <Card title="Secrets und Updates" href="/de/terraform/secrets-and-updates">Write-only-Attribute, Paketgrenzen und wie Updates ankommen.</Card>
</Cards>

## Installation

```terraform
terraform {
  required_version = ">= 1.11"
  required_providers {
    uptimeify = {
      source  = "uptimeify/uptimeify"
      version = "~> 0.2"
    }
  }
}

# endpoint und api_token fallen auf UPTIMEIFY_ENDPOINT und UPTIMEIFY_API_TOKEN zurück.
provider "uptimeify" {}
```

Der Provider steht in der [OpenTofu-Registry](https://search.opentofu.org/provider/uptimeify/uptimeify/latest) und in der [Terraform-Registry](https://registry.terraform.io/providers/Uptimeify/uptimeify/latest), jeweils unter derselben Adresse.

## Provider-Konfiguration

| Argument | Umgebungsvariable | Standard |
| --- | --- | --- |
| `api_token` (String, Sensitive) | `UPTIMEIFY_API_TOKEN` | keiner, Pflicht |
| `endpoint` (String) | `UPTIMEIFY_ENDPOINT` | `https://uptimeify.io` |

`api_token` ist ein Organisations-API-Token oder ein Kunden-Token, beide beginnen mit `wsm_`. Anlegen im Dashboard unter **Einstellungen > API**, siehe [API-Token erstellen](/de/api/introduction/generate-api-token) und [Token-Bereiche](/de/api/introduction/token-scopes-organization-vs-customer). Das Token gehört in die Umgebung oder einen Secret-Store, nicht in die Konfiguration.

## Was du verwalten kannst

Alles, was die Uptimeify-API einem API-Token zu ändern erlaubt. Alle Namen tragen das Präfix `uptimeify_`.

| Bereich | Ressourcen |
| --- | --- |
| Monitore | [`website`](/de/terraform/resources/website) (HTTP und Heartbeat), [`dns_monitor`](/de/terraform/resources/dns_monitor), [`tcp_monitor`](/de/terraform/resources/tcp_monitor), [`icmp_monitor`](/de/terraform/resources/icmp_monitor), [`smtp_monitor`](/de/terraform/resources/smtp_monitor), [`ssh_monitor`](/de/terraform/resources/ssh_monitor), [`ftp_monitor`](/de/terraform/resources/ftp_monitor), [`imap_pop_monitor`](/de/terraform/resources/imap_pop_monitor) |
| Ordnen | [`tag`](/de/terraform/resources/tag), [`monitor_tag`](/de/terraform/resources/monitor_tag), [`custom_field`](/de/terraform/resources/custom_field), [`maintenance_window`](/de/terraform/resources/maintenance_window) |
| Alarmierung | [`notification_channel`](/de/terraform/resources/notification_channel), [`escalation_config`](/de/terraform/resources/escalation_config) |
| Kunden | [`customer`](/de/terraform/resources/customer), [`customer_ip`](/de/terraform/resources/customer_ip), [`customer_domain`](/de/terraform/resources/customer_domain) |
| Incident Management | [`im_team`](/de/terraform/resources/im_team), [`im_team_member`](/de/terraform/resources/im_team_member), [`im_escalation_tier`](/de/terraform/resources/im_escalation_tier), [`im_schedule`](/de/terraform/resources/im_schedule), [`im_schedule_override`](/de/terraform/resources/im_schedule_override), [`im_team_override`](/de/terraform/resources/im_team_override), [`im_alert_source`](/de/terraform/resources/im_alert_source), [`im_routing_rule`](/de/terraform/resources/im_routing_rule), [`im_channel`](/de/terraform/resources/im_channel), [`im_outbound_integration`](/de/terraform/resources/im_outbound_integration), [`im_statuspage_rule`](/de/terraform/resources/im_statuspage_rule), [`im_org_settings`](/de/terraform/resources/im_org_settings), [`user_notification_settings`](/de/terraform/resources/user_notification_settings), [`notification_template`](/de/terraform/resources/notification_template) |
| Statusseiten | [`status_page`](/de/terraform/resources/status_page), [`status_page_design`](/de/terraform/resources/status_page_design), [`status_page_audience_groups`](/de/terraform/resources/status_page_audience_groups), [`status_page_component`](/de/terraform/resources/status_page_component), [`status_page_component_group`](/de/terraform/resources/status_page_component_group), [`status_page_maintenance`](/de/terraform/resources/status_page_maintenance), [`status_page_domain`](/de/terraform/resources/status_page_domain), [`status_page_domain_activation`](/de/terraform/resources/status_page_domain_activation) |
| Organisation | [`organization_settings`](/de/terraform/resources/organization_settings), [`organization_branding`](/de/terraform/resources/organization_branding), [`whitelabel_domain`](/de/terraform/resources/whitelabel_domain), [`report`](/de/terraform/resources/report), [`smtp_settings`](/de/terraform/resources/smtp_settings), [`user`](/de/terraform/resources/user), [`sso_oidc`](/de/terraform/resources/sso_oidc), [`sso_domain_verification`](/de/terraform/resources/sso_domain_verification) |

Datenquellen lesen Monitore und die Nachschlagewerte, die du zum Verknüpfen brauchst, zum Beispiel [`uptimeify_customer`](/de/terraform/data-sources/customer) und [`uptimeify_im_team`](/de/terraform/data-sources/im_team) per Name, [`uptimeify_im_on_call`](/de/terraform/data-sources/im_on_call), [`uptimeify_monitoring_locations`](/de/terraform/data-sources/monitoring_locations) und [`uptimeify_package_configs`](/de/terraform/data-sources/package_configs).

<Callout type="warn">`apply` und `destroy` wirken echt. `uptimeify_user` verschickt beim Anlegen die Einladungsmail und löscht den Nutzer beim Destroy.</Callout>

Über kein API-Token erreichbar und deshalb nicht im Provider: API-Tokens selbst, persönliche Benachrichtigungseinstellungen, die MFA-Richtlinie der Organisation und das SMS-Überziehungslimit.

## Fehler

Der Provider reicht den Fehler der API unverändert durch, samt maschinenlesbarem Code und Request-ID, zum Beispiel:

```text
uptimeify API: HTTP 400 checkKeywordEnabled requires searchTerm (code checkRequiresValue) [requestId 0e8f8f12-...]
```

Alle Codes stehen unter [Fehlercodes und bekannte Stolperfallen](/de/api/error-codes-and-known-pitfalls). Nenn die Request-ID, wenn du dich an den Support wendest.

## Support

Fragen und Wünsche: [hello@uptimeify.io](mailto:hello@uptimeify.io). Der Provider ist Open Source unter MPL-2.0.
