Настройка собственного хостинга
Провайдер работает с вашим собственным Status200 так же, как с Status200 Cloud: те же ресурсы, те же атрибуты и те же API-ключи проекта. Что задаёте вы: адрес вашего Status200, подходящую ему версию провайдера и, там, где они нужны, зеркало для машин без доступа к интернету и доверие к частному центру сертификации.
Terraform и ваш собственный Status200
Направьте провайдер на ваш Status200
Задайте в status200_url адрес, по которому вы открываете панель управления: схему и хост, без пути. Провайдер добавляет https://, когда у адреса нет схемы, и /api в конце, поэтому https://status200.example.com отправляет каждый запрос на https://status200.example.com/api.
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.
}Адрес может приходить и из переменной окружения STATUS200_URL, чтобы одна конфигурация могла указывать на несколько установок:
export STATUS200_URL="https://status200.example.com"
export STATUS200_API_KEY="<your-api-key>"Адрес – это хост, на котором обслуживается ваша установка: HOST и HTTP_PROTOCOL в config.env с Docker Compose и host и httpProtocol в values чарта Helm.
Ключ – это API-ключ проекта, которым вы управляете, созданный в панели управления вашего Status200 в Настройки проекта → Расширенный → Ключи API, как в Status200 Cloud. Мастер-ключ API Status200 с собственным хостингом не принадлежит ни одному проекту, поэтому создание с ним завершается ошибкой ProjectId required.
Ваш Status200 пишет этот блок за вас. Откройте любой ресурс или список в панели управления, затем Для разработчиков и Terraform в его боковом меню: показанный там блок провайдера содержит адрес вашего Status200 и подходящий ему диапазон версий.
Выберите версию провайдера
Используйте самый новый опубликованный провайдер, который не новее вашего Status200. Версии провайдера следуют версиям Status200: релиз Status200, который меняет провайдер, публикует его под собственным номером версии, а провайдер новее вашего Status200 может отправлять настройки, которых у вашего Status200 ещё нет.
Поэтому пишите диапазон, который заканчивается версией вашего Status200, как это делает панель управления. Блок выше использует >= 14.0, <= 14.0.88, диапазон для того Status200, с которого взята эта документация: когда вы читаете её на своём Status200, этот диапазон – ваш. Иначе впишите свою версию:
Узнайте версию вашего Status200
Спросите её у вашего Status200:
curl https://status200.example.com/versionОтвет – JSON вида
{"version":"14.0.40","commit":"..."}. Как главный администратор вы также можете открыть метку редакции в заголовке панели администратора: см. Узнайте свою текущую версию.Впишите её в диапазон
Диапазон начинается с основной версии и заканчивается вашей. Для Status200 14.0.40:
terraform { required_providers { oneuptime = { source = "oneuptime/status200" version = ">= 14.0, <= 14.0.40" } } }Terraform берёт самый новый провайдер из диапазона. Релиз Status200, который не менял провайдер, его не публикует, и диапазон пропускает версии, которых не существует.
Скачайте провайдер
Выполните
terraform init. Он выводит установленную версию и записывает её в.terraform.lock.hcl.
При обновлении сначала обновите Status200. Затем поднимите конец диапазона до его новой версии и выполните terraform init -upgrade.
Без доступа к интернету
Когда машины, на которых работает Terraform, не могут достучаться до реестра, один раз скопируйте провайдер в свою сеть и направьте Terraform на копию.
Сделайте зеркало провайдера
На машине с доступом к интернету, в папке с вашей конфигурацией, скачайте провайдер для каждой платформы, на которой работают ваши машины. Без
-platformкоманда скачивает провайдер только для своей платформы:Terraform
terraform providers mirror -platform=linux_amd64 -platform=darwin_arm64 /srv/terraform-mirrorOpenTofu
tofu providers mirror -platform=linux_amd64 -platform=darwin_arm64 /srv/terraform-mirrorПапка содержит провайдер под адресом реестра, например
registry.terraform.io/status200/status200/. Скопируйте её в свою сеть.Направьте Terraform на зеркало
Напишите файл конфигурации CLI, который устанавливает провайдер Status200 из папки, а всё остальное как обычно:
Terraform
provider_installation { filesystem_mirror { path = "/srv/terraform-mirror" include = ["registry.terraform.io/status200/status200"] } direct { exclude = ["registry.terraform.io/status200/status200"] } }OpenTofu
provider_installation { filesystem_mirror { path = "/srv/terraform-mirror" include = ["registry.opentofu.org/status200/status200"] } direct { exclude = ["registry.opentofu.org/status200/status200"] } }Укажите его в
TF_CLI_CONFIG_FILE, которую читают и Terraform, и OpenTofu:export TF_CLI_CONFIG_FILE=/etc/terraform/mirror.tfrc.Инициализируйте
Выполните
terraform init: он устанавливает провайдер из зеркала. Он предупреждает, что в файле блокировки теперь есть контрольные суммы только для этой платформы. Чтобы записать их для всех платформ, выполнитеterraform providers lockс теми же параметрами-platformна машине с доступом к интернету и закоммитьте.terraform.lock.hclвместе с конфигурацией.
Обновляйте зеркало каждый раз, когда поднимаете диапазон версий.
TLS и сертификаты
Провайдер проверяет сертификат вашего Status200 по хранилищу доверенных сертификатов машины, на которой работает Terraform, и настройки, позволяющей пропустить проверку, нет. Если сертификат выдан частным центром сертификации, добавьте этот центр в хранилище доверенных сертификатов каждой машины и каждого CI-раннера, где работает Terraform:
Debian / Ubuntu
sudo cp my-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificatesRHEL / Fedora
sudo cp my-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trustВ Linux, где менять хранилище доверенных сертификатов нельзя, например в CI-контейнере, задайте SSL_CERT_FILE с файлом, в котором есть ваш центр сертификации и публичные центры. В macOS и Windows добавьте центр сертификации в системное хранилище сертификатов.
- Прокси. Провайдер отправляет запросы через прокси из
HTTPS_PROXY, кроме запросов к хостам изNO_PROXY. Обратный прокси перед Status200 должен пропускать без изменений каждый путь/apiи заголовокAPIKey. - Обычный HTTP. Адрес
http://работает для тестовой установки. API-ключ передаётся с каждым запросом, поэтому для всего остального используйте HTTPS.
Устранение неполадок
Сообщение «x509: certificate signed by unknown authority»
Машина, на которой работает Terraform, не доверяет сертификату вашего Status200: добавьте свой центр сертификации, как показано в TLS и сертификаты.
Сообщение «invalid character '<' looking for beginning of value»
Вместо API ответила веб-страница: в status200_url есть путь, или ответил прокси. Задайте в нём только адрес вашего Status200.
Сообщение «no available releases match the given constraints»
Ни один опубликованный провайдер не подходит под ограничение версии, например ограничение, которое называет одну версию, так и не опубликованную Status200. Напишите диапазон, как показано в Выберите версию провайдера.
Сообщение «ProjectId required»
Ключ – это мастер-ключ API, который не принадлежит ни одному проекту. Создайте API-ключ проекта в Настройки проекта → Расширенный → Ключи API.
В Устранение неполадок собраны остальные ошибки и то, что означает каждая.