Быстрый старт
Это руководство примерно за десять минут проведёт вас от нуля до проекта Status200 под управлением Terraform. Вы создадите API-ключ, направите Terraform на свой проект и примените метку, монитор, который проверяет ваш сайт, и закрытую страницу состояния, которая его показывает. Затем вы измените один из них и всё уберёте.
Что вы построите в этом руководстве
Перед началом
- Terraform 1.5 или новее либо OpenTofu 1.6 или новее. С OpenTofu запускайте
tofuвезде, где это руководство запускаетterraform. - Проект Status200 на status200.ru или на вашем собственном Status200, в котором вы можете создавать API-ключи.
- В Status200 Cloud — тариф Growth или выше. API-ключи проекта работают только на нём.
Создание первых ресурсов
Создайте API-ключ проекта
В панели управления Status200 откройте Настройки проекта → Расширенный → Ключи API и нажмите Создать: API-ключ. Укажите Имя, например
terraform, и в поле Доступ выберите Администратор проекта: Terraform создаёт, читает, изменяет и удаляет все виды записей, которыми управляет, а Администратор проекта может делать всё это. Для более узкого ключа выберите Выбрать разрешения позже и добавьте на странице ключа только нужные разрешения.Ключ истекает через год. Чтобы выбрать другую дату, откройте Дополнительные поля перед созданием или измените дату позже на странице ключа. Когда ключ создан, открывается его страница: скопируйте API-ключ из карточки Сведения о ключе API.
Сделайте ключ доступным для Terraform
Поместите ключ в переменную окружения
STATUS200_API_KEYоболочки, в которой вы запускаете Terraform, чтобы он никогда не попал в файл: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 на Status200
Создайте пустую папку, а в ней файл с именем
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" }На Status200 с собственным хостингом прочитайте Настройка собственного хостинга, прежде чем выбирать версию провайдера.
Опишите ресурсы
Добавьте эти блоки в
main.tf. Они читают два статуса монитора, с которых начинается каждый проект, и создают метку, монитор, который проверяетhttps://example.comкаждые пять минут (укажите там свой сайт), и закрытую страницу состояния, которая показывает монитор:data "status200_monitor_status" "operational" { name = "Работает" } data "status200_monitor_status" "offline" { name = "Не в сети" } 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 }monitor_stepsмонитора говорят, что он проверяет и что означает каждый результат: после каждой проверки его статус задаёт первый совпавший критерий. Каждая часть объяснена в разделе Шаги монитора.Запустите план и примените
Terraform
terraform init terraform plan terraform applyOpenTofu
tofu init tofu plan tofu applyinitскачивает провайдер. План заканчивается строкойPlan: 4 to add, 0 to change, 0 to destroy.Введитеyes, чтобы применить его; когда всё готово, Terraform выводит ID нового монитора.Проверьте панель управления
В панели управления Status200:
- Мониторы показывает
Homepageс меткойcritical. Его первая проверка приходит в течение нескольких минут. - Страницы состояния показывает
Internal Status, которая показываетHomepage. - Настройки проекта → Базовый → Метки показывает
criticalв заданном вами цвете.
Снова запустите
terraform plan. Он отвечаетNo changes.: в Status200 ровно то, что сказано в конфигурации.- Мониторы показывает
Изменение ресурса
Меняйте конфигурацию, а не панель управления. Задайте color метки равным "#2ECC71" в main.tf, затем запустите план и примените:
terraform plan
terraform applyПлан заканчивается строкой Plan: 0 to add, 1 to change, 0 to destroy.: метка изменяется на месте. Изменение, которое кто-то вносит в панели управления в ресурс под управлением Terraform, появляется в следующем плане, и его применение возвращает то, что сказано в конфигурации.
Уборка
Если это была проба, удалите то, что создала конфигурация:
terraform destroyЭто удаляет метку, монитор, страницу состояния и её ресурс. Два статуса монитора остаются: источники данных их только читают.
Устранение неполадок
Сообщение «Missing API Key»
Провайдер не нашёл API-ключ. Экспортируйте STATUS200_API_KEY в оболочке, в которой вы запускаете Terraform, или задайте api_key в блоке провайдера и запустите команду снова.
Сообщение «the Status200 API returned status 400: Invalid API Key»
Ключ введён с ошибкой, истёк или удалён либо принадлежит другому Status200, чем тот, на который указывает status200_url. Скопируйте ключ ещё раз с его страницы или создайте новый.
Сообщение «the Status200 API returned status 402: API keys need the Growth plan»
В Status200 Cloud API-ключи проекта работают только на тарифе Growth или выше. Повысьте тариф проекта в Настройки проекта → Биллинг и счета → Биллинг, и тот же ключ снова заработает.
Сообщение «the Status200 API returned status 422: You do not have permissions to create Monitor»
У ключа нет разрешения на этот вид записей. На странице ключа выдайте ему Администратор проекта или разрешение, названное в сообщении.
Сообщение «No monitor status matches {name = "Не в сети"}»
Статусы мониторов вашего проекта называются иначе. Используйте имена, которые вы видите в Мониторы → Настройки → Статус монитора, или найдите статус по is_offline_state = true.