Gå til indhold
Selv-hostet opsætning

Selv-hostet opsætning

Vis som Markdown

Provideren virker med din egen Status200, som den virker med Status200 Cloud: de samme ressourcer, de samme attributter og de samme API-nøgler til projektet. Det, du selv skal angive: adressen på din Status200, den providerversion, der passer til den, og, hvor du har brug for dem, et spejl til maskiner uden internetadgang og tillid til en privat certifikatudsteder.

flowchart TB R["Terraform Registry,<br/>OpenTofu Registry<br/>eller dit spejl"] -->|"terraform init"| T["Terraform eller OpenTofu"] T --> P["Status200-provideren,<br/>ikke nyere end<br/>din Status200"] P -->|"HTTPS, med en<br/>API-nøgle til dit projekt"| O["Din Status200:<br/>dens adresse, så /api"]

Terraform og din egen Status200

Lad provideren pege på din Status200

Sæt status200_url til den adresse, du åbner dashboardet på: skemaet og værten, uden sti. Provideren tilføjer https://, når adressen ikke har et skema, og /api til sidst, så https://status200.example.com sender hver forespørgsel til 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 stedet komme fra miljøvariablen STATUS200_URL, så én konfiguration kan pege på flere installationer:

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

Adressen er den vært, din installation serveres på: HOST og HTTP_PROTOCOL i config.env med Docker Compose, og host og httpProtocol i Helm-chartets values.

Nøglen er en API-nøgle til det projekt, du styrer, oprettet i din Status200s dashboard under Projektindstillinger → Avanceret → API-nøgler, som på Status200 Cloud. Master-API-nøglen på en selv-hostet Status200 hører ikke til noget projekt, så en oprettelse med den fejler med ProjectId required.

Tip

Din Status200 skriver denne blok for dig. Åbn en vilkårlig ressource eller liste i dashboardet, og derefter Udvikler og Terraform i dens sidemenu: provider-blokken, den viser, har din Status200s adresse og et versionsinterval, der passer til den.

Vælg providerversionen

Brug den nyeste udgivne provider, der ikke er nyere end din Status200. Providerversioner følger Status200s: en Status200-release, der ændrer provideren, udgiver den under releasens eget versionsnummer, og en provider, der er nyere end din Status200, kan sende indstillinger, som din Status200 endnu ikke har.

Skriv derfor et interval, der slutter ved din Status200s version, som dashboardet gør. Blokken ovenfor tager >= 14.0, <= 14.0.88, intervallet for den Status200, denne dokumentation kommer fra: når du læser den på din egen Status200, er det interval dit. Ellers skal du skrive din egen version ind:

  1. Find din Status200s version

    Spørg din Status200 om den:

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

    Svaret er JSON, som {"version":"14.0.40","commit":"..."}. Som masteradministrator kan du også åbne udgavemærket i headeren på Admin-dashboardet: se Find din nuværende version.

  2. Skriv den ind i intervallet

    Intervallet starter ved hovedversionen og slutter ved din. For en Status200 14.0.40:

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

    Terraform tager den nyeste provider i intervallet. En Status200-release, der ikke ændrede provideren, udgiver ingen, og intervallet springer de versioner over, der ikke findes.

  3. Hent provideren

    Kør terraform init. Den viser den version, den installerede, og registrerer den i .terraform.lock.hcl.

Når du opgraderer, så opgradér Status200 først. Hæv derefter slutningen af intervallet til dens nye version, og kør terraform init -upgrade.

Uden internetadgang

Når de maskiner, der kører Terraform, ikke kan nå registret, skal du kopiere provideren ind i dit netværk én gang og lade Terraform pege på kopien.

  1. Spejl provideren

    Hent på en maskine med internetadgang, i en mappe med din konfiguration, provideren til hver platform, dine maskiner kører på. Uden -platform henter kommandoen kun provideren til sin egen platform:

    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 indeholder provideren under registrets adresse, som registry.terraform.io/status200/status200/. Kopiér den ind i dit netværk.

  2. Lad Terraform pege på spejlet

    Skriv en CLI-konfigurationsfil, der installerer Status200-provideren fra mappen og alt andet som normalt:

    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"]
      }
    }

    Angiv den i TF_CLI_CONFIG_FILE, som både Terraform og OpenTofu læser: export TF_CLI_CONFIG_FILE=/etc/terraform/mirror.tfrc.

  3. Initialisér

    Kør terraform init: den installerer provideren fra spejlet. Den advarer om, at låsefilen nu kun har checksums for denne platform. For at registrere dem for alle platforme skal du køre terraform providers lock med de samme -platform-indstillinger på maskinen med internetadgang og committe .terraform.lock.hcl sammen med din konfiguration.

Spejl igen, hver gang du hæver versionsintervallet.

TLS og certifikater

Provideren kontrollerer din Status200s certifikat mod tillidslageret på den maskine, der kører Terraform, og der er ingen indstilling til at springe kontrollen over. Når certifikatet kommer fra en privat certifikatudsteder, skal du tilføje den udsteder til tillidslageret på hver maskine og CI-runner, der kører 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, hvor du ikke kan ændre tillidslageret, som i en CI-container, skal du sætte SSL_CERT_FILE til en fil, der indeholder din udsteder og de offentlige udstedere. På macOS og Windows skal du tilføje udstederen til systemets certifikatlager.

  • Proxyer. Provideren sender sine forespørgsler gennem proxyen i HTTPS_PROXY, undtagen til værterne i NO_PROXY. En reverse proxy foran Status200 skal sende hver /api-sti og headeren APIKey uændret igennem.
  • Almindelig HTTP. En http://-adresse virker, til en testinstallation. API-nøglen sendes med hver forespørgsel, så brug HTTPS til alt andet.

Fejlfinding

Meddelelsen “x509: certificate signed by unknown authority”

Den maskine, der kører Terraform, stoler ikke på din Status200s certifikat: tilføj din certifikatudsteder, som TLS og certifikater viser.

Meddelelsen “invalid character '<' looking for beginning of value”

En webside svarede i stedet for API'et: status200_url indeholder en sti, eller en proxy svarede. Sæt den til kun din Status200s adresse.

Meddelelsen “no available releases match the given constraints”

Ingen udgivet provider passer til versionsbegrænsningen, for eksempel en begrænsning, der nævner én version, som Status200 aldrig har udgivet. Skriv et interval, som Vælg providerversionen viser.

Meddelelsen “ProjectId required”

Nøglen er master-API-nøglen, som ikke hører til noget projekt. Opret en API-nøgle til projektet under Projektindstillinger → Avanceret → API-nøgler.

Fejlfinding har de andre fejl, og hvad hver enkelt betyder.

Næste skridt