شروع سریع
این راهنما شما را در حدود ده دقیقه از هیچ به یک پروژهٔ Status200 میرساند که Terraform مدیریتش میکند. یک کلید API میسازید، Terraform را به پروژهتان وصل میکنید، و یک برچسب، یک مانیتور که وبسایت شما را بررسی میکند، و یک صفحهٔ وضعیت خصوصی که آن را نشان میدهد اعمال میکنید. سپس یکی از آنها را تغییر میدهید و همهچیز را پاک میکنید.
آنچه در این راهنما میسازید
پیش از شروع
- Terraform 1.5 یا جدیدتر، یا OpenTofu 1.6 یا جدیدتر. با OpenTofu، هر جا این راهنما
terraformرا اجرا میکند،tofuرا اجرا کنید. - یک پروژهٔ 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 = "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 }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 شناسهٔ مانیتور تازه را چاپ میکند.داشبورد را بررسی کنید
در داشبورد Status200:
- مانیتورها
Homepageرا با برچسبcriticalفهرست میکند. نخستین بررسی آن ظرف چند دقیقه انجام میشود. - صفحات وضعیت
Internal Statusرا فهرست میکند کهHomepageرا نشان میدهد. - تنظیمات پروژه > پایه > برچسبها
criticalرا با رنگی که تعیین کردهاید فهرست میکند.
دوباره
terraform planرا اجرا کنید. پاسخ میدهدNo changes.: Status200 دقیقاً همان چیزی را دارد که پیکربندی میگوید.- مانیتورها
تغییر یک منبع
پیکربندی را تغییر دهید، نه داشبورد را. در main.tf مقدار color برچسب را "#2ECC71" بگذارید، سپس پلن بگیرید و اعمال کنید:
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 را در آن اجرا میکنید export کنید، یا 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 = "Offline"}»
وضعیتهای مانیتور پروژهٔ شما نامهای دیگری دارند. نامهایی را که در مانیتورها > تنظیمات > وضعیت مانیتور میبینید به کار ببرید، یا بهجای آن وضعیت را با is_offline_state = true پیدا کنید.