Hoppa till innehåll
Självhostad konfiguration

Självhostad konfiguration

Visa som Markdown

Providern fungerar med ditt eget Status200 på samma sätt som med Status200 Cloud: samma resurser, samma attribut och samma API-nycklar för projektet. Det som är ditt att ange: adressen till ditt Status200, den providerversion som passar det, och, där du behöver dem, en spegel för maskiner utan internetåtkomst och förtroende för en privat certifikatutfärdare.

flowchart TB R["Terraform Registry,<br/>OpenTofu Registry<br/>eller din spegel"] -->|"terraform init"| T["Terraform eller OpenTofu"] T --> P["Status200-providern,<br/>inte nyare än<br/>ditt Status200"] P -->|"HTTPS, med en<br/>API-nyckel för ditt projekt"| O["Ditt Status200:<br/>dess adress, sedan /api"]

Terraform och ditt eget Status200

Peka providern mot ditt Status200

Sätt status200_url till adressen där du öppnar instrumentpanelen: schemat och värden, utan sökväg. Providern lägger till https:// när adressen saknar schema, och /api i slutet, så https://status200.example.com skickar varje begäran till https://status200.example.com/api.

main.tfHCL
terraform {
  required_providers {
    oneuptime = {
      source  = "oneuptime/status200"
      version = ">= 14.0, <= 14.0.88"
    }
  }
}

provider "oneuptime" {
  status200_url = "https://status200.example.com"
  # The API key comes from the STATUS200_API_KEY environment variable.
}

Adressen kan i stället komma från miljövariabeln STATUS200_URL, så att en konfiguration kan peka mot flera installationer:

Bash
export STATUS200_URL="https://status200.example.com"
export STATUS200_API_KEY="<your-api-key>"

Adressen är värden som din installation serveras på: HOST och HTTP_PROTOCOL i config.env med Docker Compose, och host och httpProtocol i Helm-diagrammets values.

Nyckeln är en API-nyckel för projektet som du hanterar, skapad i ditt Status200s instrumentpanel under Projektinställningar → Avancerad → API-nycklar, som på Status200 Cloud. Master-API-nyckeln i ett självhostat Status200 hör inte till något projekt, så ett skapande med den misslyckas med ProjectId required.

Tips

Ditt Status200 skriver det här blocket åt dig. Öppna valfri resurs eller lista i instrumentpanelen, och sedan Utvecklare och Terraform i dess sidomeny: provider-blocket som visas har ditt Status200s adress, och ett versionsintervall som passar det.

Välj providerversion

Använd den senaste publicerade providern som inte är nyare än ditt Status200. Providerversioner följer Status200s: en Status200-release som ändrar providern publicerar den under releasens eget versionsnummer, och en provider som är nyare än ditt Status200 kan skicka inställningar som ditt Status200 inte har än.

Skriv därför ett intervall som slutar vid ditt Status200s version, som instrumentpanelen gör. Blocket ovan tar >= 14.0, <= 14.0.88, intervallet för det Status200 som den här dokumentationen kommer från: när du läser den på ditt eget Status200 är det intervallet ditt. Annars skriver du in din egen version:

  1. Ta reda på ditt Status200s version

    Fråga ditt Status200:

    Bash
    curl https://status200.example.com/version

    Svaret är JSON, som {"version":"14.0.40","commit":"..."}. Som huvudadministratör kan du också öppna utgåvemärket i sidhuvudet i administratörspanelen: se Ta reda på din nuvarande version.

  2. Skriv in den i intervallet

    Intervallet börjar vid huvudversionen och slutar vid din. För ett Status200 14.0.40:

    main.tfHCL
    terraform {
      required_providers {
        oneuptime = {
          source  = "oneuptime/status200"
          version = ">= 14.0, <= 14.0.40"
        }
      }
    }

    Terraform tar den senaste providern i intervallet. En Status200-release som inte ändrade providern publicerar ingen, och intervallet hoppar över de versioner som inte finns.

  3. Ladda ner providern

    Kör terraform init. Den visar versionen som den installerade och registrerar den i .terraform.lock.hcl.

När du uppgraderar, uppgradera Status200 först. Höj sedan slutet av intervallet till dess nya version, och kör terraform init -upgrade.

Utan internetåtkomst

När maskinerna som kör Terraform inte kan nå registret kopierar du providern till ditt nätverk en gång och låter Terraform peka mot kopian.

  1. Spegla providern

    Ladda ner providern för varje plattform som dina maskiner kör, på en maskin med internetåtkomst, i en mapp med din konfiguration. Utan -platform laddar kommandot bara ner providern för sin egen plattform:

    Terraform

    Bash
    terraform providers mirror -platform=linux_amd64 -platform=darwin_arm64 /srv/terraform-mirror

    OpenTofu

    Bash
    tofu providers mirror -platform=linux_amd64 -platform=darwin_arm64 /srv/terraform-mirror

    Mappen innehåller providern under registrets adress, som registry.terraform.io/status200/status200/. Kopiera den till ditt nätverk.

  2. Peka Terraform mot spegeln

    Skriv en CLI-konfigurationsfil som installerar Status200-providern från mappen, och allt annat som vanligt:

    Terraform

    mirror.tfrcHCL
    provider_installation {
      filesystem_mirror {
        path    = "/srv/terraform-mirror"
        include = ["registry.terraform.io/status200/status200"]
      }
      direct {
        exclude = ["registry.terraform.io/status200/status200"]
      }
    }

    OpenTofu

    mirror.tfrcHCL
    provider_installation {
      filesystem_mirror {
        path    = "/srv/terraform-mirror"
        include = ["registry.opentofu.org/status200/status200"]
      }
      direct {
        exclude = ["registry.opentofu.org/status200/status200"]
      }
    }

    Ange den i TF_CLI_CONFIG_FILE, som både Terraform och OpenTofu läser: export TF_CLI_CONFIG_FILE=/etc/terraform/mirror.tfrc.

  3. Initiera

    Kör terraform init: den installerar providern från spegeln. Den varnar för att låsfilen nu bara har kontrollsummor för den här plattformen. För att registrera dem för alla plattformar kör du terraform providers lock med samma -platform-alternativ på maskinen med internetåtkomst, och checkar in .terraform.lock.hcl tillsammans med din konfiguration.

Spegla igen varje gång du höjer versionsintervallet.

TLS och certifikat

Providern kontrollerar ditt Status200s certifikat mot förtroendearkivet på maskinen som kör Terraform, och det finns ingen inställning för att hoppa över kontrollen. När certifikatet kommer från en privat certifikatutfärdare lägger du till den utfärdaren i förtroendearkivet på varje maskin och CI-runner som kör Terraform:

Debian / Ubuntu

Bash
sudo cp my-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

RHEL / Fedora

Bash
sudo cp my-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust

På Linux, där du inte kan ändra förtroendearkivet, som i en CI-container, sätter du SSL_CERT_FILE till en fil som innehåller din utfärdare och de offentliga utfärdarna. På macOS och Windows lägger du till utfärdaren i systemets certifikatarkiv.

  • Proxyservrar. Providern skickar sina begäranden via proxyn i HTTPS_PROXY, utom till värdarna i NO_PROXY. En omvänd proxy framför Status200 måste släppa igenom varje /api-sökväg och huvudet APIKey oförändrade.
  • Vanlig HTTP. En http://-adress fungerar, för en testinstallation. API-nyckeln följer med varje begäran, så använd HTTPS för allt annat.

Felsökning

Meddelandet ”x509: certificate signed by unknown authority”

Maskinen som kör Terraform litar inte på ditt Status200s certifikat: lägg till din certifikatutfärdare som TLS och certifikat visar.

Meddelandet ”invalid character '<' looking for beginning of value”

En webbsida svarade i stället för API:et: status200_url innehåller en sökväg, eller så svarade en proxy. Sätt den till bara ditt Status200s adress.

Meddelandet ”no available releases match the given constraints”

Ingen publicerad provider passar versionsbegränsningen, till exempel en begränsning som nämner en enda version som Status200 aldrig har publicerat. Skriv ett intervall, som Välj providerversion visar.

Meddelandet ”ProjectId required”

Nyckeln är master-API-nyckeln, som inte hör till något projekt. Skapa en API-nyckel för projektet under Projektinställningar → Avancerad → API-nycklar.

Felsökning har de andra felen, och vad vart och ett betyder.

Nästa steg