त्वरित प्रारंभ
यह गाइड आपको लगभग दस मिनट में शून्य से Terraform द्वारा प्रबंधित Status200 प्रोजेक्ट तक ले जाती है। आप एक 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 नए मॉनिटर का ID प्रिंट करता है।डैशबोर्ड जाँचें
Status200 डैशबोर्ड में:
- मॉनिटर
criticalलेबल के साथHomepageदिखाता है। उसकी पहली जाँच कुछ ही मिनटों में आ जाती है। - स्थिति पृष्ठ
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 कुंजी नहीं मिली। जिस शेल में आप Terraform चलाते हैं, उसमें STATUS200_API_KEY export करें, या प्रदाता ब्लॉक में api_key सेट करें, और कमांड फिर से चलाएँ।
संदेश “the Status200 API returned status 400: Invalid API Key”
कुंजी गलत टाइप हुई है, समाप्त हो गई है या हटा दी गई है, या वह उस Status200 के बजाय किसी दूसरे 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 से स्थिति खोजें।