Snelle start
Deze handleiding brengt je in ongeveer tien minuten van niets naar een Status200-project dat door Terraform wordt beheerd. Je maakt een API-sleutel aan, richt Terraform op je project en past een label toe, een monitor die je website controleert en een privé statuspagina die hem toont. Daarna wijzig je er een en ruim je op.
Wat je in deze handleiding bouwt
Voordat je begint
- Terraform 1.5 of hoger, of OpenTofu 1.6 of hoger. Voer met OpenTofu
tofuuit overal waar deze handleidingterraformuitvoert. - Een Status200-project op status200.ru of op je eigen Status200, waarin je API-sleutels kunt aanmaken.
- Op Status200 Cloud het Growth-abonnement of hoger. De API-sleutels van een project werken alleen daarmee.
Je eerste resources maken
Een API-sleutel voor het project aanmaken
Open in het Status200-dashboard Projectinstellingen → Geavanceerd → API-sleutels en klik op API-sleutel aanmaken. Geef hem een Naam, zoals
terraform, en kies onder Toegang voor Projectbeheerder: Terraform maakt, leest, wijzigt en verwijdert elk soort record dat het beheert, en Projectbeheerder mag dat allemaal. Kies voor een beperktere sleutel Machtigingen later kiezen en voeg op de pagina van de sleutel alleen de machtigingen toe die je nodig hebt.De sleutel verloopt over een jaar. Om een andere datum te kiezen, open je Meer velden voordat je hem aanmaakt, of wijzig je de datum later op de pagina van de sleutel. Zodra de sleutel is aangemaakt, opent zijn pagina: kopieer de API-sleutel uit de kaart API-sleuteldetails.
De sleutel beschikbaar maken voor Terraform
Zet de sleutel in de omgevingsvariabele
STATUS200_API_KEYvan de shell waarin je Terraform uitvoert, zodat hij nooit in een bestand belandt:Linux
export STATUS200_API_KEY="<your-api-key>"macOS
export STATUS200_API_KEY="<your-api-key>"Windows
$env:STATUS200_API_KEY = "<your-api-key>"Terraform op Status200 richten
Maak een lege map, met daarin een bestand met de naam
main.tf:terraform { required_providers { oneuptime = { source = "oneuptime/status200" version = "~> 14.0" } } } provider "oneuptime" { # The API key comes from STATUS200_API_KEY. # On a self-hosted Status200, add your Status200's address: # status200_url = "https://status200.example.com" }Lees op een zelf gehoste Status200 eerst Zelf gehoste installatie voordat je een providerversie kiest.
Je resources beschrijven
Voeg deze blokken toe aan
main.tf. Ze lezen twee van de monitorstatussen waarmee elk project begint, en maken een label, een monitor diehttps://example.comelke vijf minuten controleert (zet daar je eigen website neer) en een privé statuspagina die de monitor toont:data "status200_monitor_status" "operational" { name = "Operational" } data "status200_monitor_status" "offline" { name = "Offline" } resource "status200_label" "critical" { name = "critical" description = "Resources that page on-call when down" color = "#FF5733" } resource "status200_monitor" "homepage" { name = "Homepage" description = "Checks that the homepage responds" monitor_type = "Website" monitoring_interval = "*/5 * * * *" labels = [status200_label.critical.id] monitor_steps = [{ monitor_destination = "https://example.com" monitor_destination_type = "URL" request_type = "GET" criteria = [ { name = "Offline" description = "The homepage does not respond" filter_condition = "Any" change_monitor_status = true monitor_status_id = data.status200_monitor_status.offline.id filters = [ { check_on = "Is Online" filter_type = "False" } ] }, { name = "Online" description = "The homepage responds" filter_condition = "All" change_monitor_status = true monitor_status_id = data.status200_monitor_status.operational.id filters = [ { check_on = "Is Online" filter_type = "True" } ] } ] }] } resource "status200_status_page" "internal" { name = "Internal Status" description = "Status of our internal services" page_title = "Service Status" is_public_status_page = false } resource "status200_status_page_resource" "homepage" { status_page_id = status200_status_page.internal.id monitor_id = status200_monitor.homepage.id display_name = "Homepage" } output "monitor_id" { value = status200_monitor.homepage.id }De
monitor_stepsvan de monitor zeggen wat hij controleert en wat elk resultaat betekent: na elke controle bepaalt het eerste criterium dat overeenkomt zijn status. Monitorstappen legt elk onderdeel uit.Plannen en toepassen
Terraform
terraform init terraform plan terraform applyOpenTofu
tofu init tofu plan tofu applyinitdownloadt de provider. Het plan eindigt metPlan: 4 to add, 0 to change, 0 to destroy.Typyesom het toe te passen; als het klaar is, drukt Terraform de ID van de nieuwe monitor af.Het dashboard controleren
In het Status200-dashboard:
- Monitoren toont
Homepage, met het labelcritical. De eerste controle komt binnen een paar minuten binnen. - Statuspagina's toont
Internal Status, dieHomepagetoont. - Projectinstellingen → Basis → Labels toont
critical, in de kleur die je hebt ingesteld.
Voer
terraform planopnieuw uit. Het antwoordtNo changes.: Status200 bevat precies wat de configuratie zegt.- Monitoren toont
Een resource wijzigen
Wijzig de configuratie, niet het dashboard. Zet de color van het label in main.tf op "#2ECC71", en plan en pas dan toe:
terraform plan
terraform applyHet plan eindigt met Plan: 0 to add, 1 to change, 0 to destroy.: het label wordt ter plekke gewijzigd. Een wijziging die iemand in het dashboard aanbrengt aan een resource die Terraform beheert, verschijnt in het volgende plan, en door het toe te passen komt terug wat de configuratie zegt.
Opruimen
Als dit een proefrit was, verwijder dan wat de configuratie heeft gemaakt:
terraform destroyDit verwijdert het label, de monitor, de statuspagina en de resource ervan. De twee monitorstatussen blijven: de data sources lezen ze alleen.
Probleemoplossing
Melding „Missing API Key”
De provider heeft geen API-sleutel gevonden. Exporteer STATUS200_API_KEY in de shell waarin je Terraform uitvoert, of stel api_key in het provider-blok in, en voer de opdracht opnieuw uit.
Melding „the Status200 API returned status 400: Invalid API Key”
De sleutel is verkeerd getypt, verlopen of verwijderd, of hij hoort bij een andere Status200 dan die waar status200_url naar wijst. Kopieer de sleutel opnieuw van zijn pagina, of maak een nieuwe aan.
Melding „the Status200 API returned status 402: API keys need the Growth plan”
Op Status200 Cloud werken de API-sleutels van een project alleen met het Growth-abonnement of hoger. Upgrade het project in Projectinstellingen → Facturering en facturen → Facturering, en dezelfde sleutel werkt weer.
Melding „the Status200 API returned status 422: You do not have permissions to create Monitor”
De sleutel heeft geen machtiging voor dat soort record. Geef hem op de pagina van de sleutel Projectbeheerder, of de machtiging die de melding noemt.
Melding „No monitor status matches {name = "Offline"}”
De monitorstatussen van je project hebben andere namen. Gebruik de namen die je ziet in Monitoren → Instellingen → Monitorstatus, of zoek de status in plaats daarvan op met is_offline_state = true.