इसे छोड़कर कंटेंट पर जाएं

डेमो को डिप्लॉय करें

पूर्वापेक्षाएँ

Section titled “पूर्वापेक्षाएँ”
  • Terraform terraform/versions.tf में निर्धारित न्यूनतम संस्करण पर — >= 1.8, प्रोवाइडर-परिभाषित फ़ंक्शनों और VIP की रक्षा करने वाले check ब्लॉक के लिए।
  • xcsh प्रोवाइडर। कोई भी चीज़ किसी संस्करण को पिन नहीं करती: .terraform.lock.hcl gitignored है और यह अड़चन एक खुली-सिरे वाली न्यूनतम सीमा है, इसलिए प्रत्येक init नवीनतम प्रकाशित रिलीज़ को हल करता है। एक प्रीरिलीज़ प्रोजेक्ट के लिए यह जानबूझकर किया गया है — डेमो को किसी प्रोवाइडर रिग्रेशन पर विफल होना चाहिए, बजाय इसके कि वह किसी पुराने संस्करण पर टिका रहे जो उसे छिपा दे।
  • F5 XC API क्रेडेंशियल var.expected_xc_tenant में निर्दिष्ट टेनेंट के लिए, जिसे XCSH_API_TOKEN (या P12/PEM जोड़ी) के रूप में एक्सपोर्ट किया गया हो। केवल क्रेडेंशियल एक्सपोर्ट करें, कभी URL नहीं — नीचे देखें।
  • Azure क्रेडेंशियल जिनके पास एक रिसोर्स ग्रुप, VNet, Route Server और VMs बनाने के अधिकार हों।
  • ऐप टियर के लिए एक पहले से मौजूद F5 XC नेमस्पेस। डिप्लॉयमेंट इसे पढ़ता है और कभी नहीं बनाता या नष्ट करता, इसलिए असंबंधित डेमो रखने वाला कोई नेमस्पेस कभी इस स्टैक की destroy सूची में नहीं आ सकता।

उन दो मानों की आपूर्ति करें जिनका कोई डिफ़ॉल्ट नहीं है

Section titled “उन दो मानों की आपूर्ति करें जिनका कोई डिफ़ॉल्ट नहीं है”

हर दूसरे वेरिएबल का एक कार्यशील डिफ़ॉल्ट है, और प्रत्येक ऑब्जेक्ट का नाम var.component से व्युत्पन्न होता है। दो को जानबूझकर बिना डिफ़ॉल्ट छोड़ा गया है:

Terminal window
cd terraform
cp terraform.tfvars.example terraform.tfvars
वेरिएबलइसका कोई डिफ़ॉल्ट क्यों नहीं है
origin_ipकोई भी डिफ़ॉल्ट एक विशिष्ट मशीन होती है। एक पुराना मान नए डिप्लॉयमेंट का ट्रैफ़िक विफल होने के बजाय किसी और के होस्ट पर भेज देता है।
lb_domainलोड बैलेंसर Host पर मिलान करता है, इसलिए यही वह मान है जो प्रत्येक अनुरोध को भेजना ही होगा। यह उसका है जो डिप्लॉयमेंट चलाता है।

दोनों प्रारूप-सत्यापित हैं, इसलिए कोई टाइपो डेमो के बजाय plan को विफल करता है।

terraform.tfvars gitignored है, और इसे वैसा ही रहना चाहिए: इसमें एक सब्सक्रिप्शन id और प्रति-इंजीनियर मान होते हैं।

टेनेंट कॉन्फ़िगरेशन है, वह नहीं जो आपका शेल एक्सपोर्ट कर रहा हो

Section titled “टेनेंट कॉन्फ़िगरेशन है, वह नहीं जो आपका शेल एक्सपोर्ट कर रहा हो”

var.expected_xc_tenant टेनेंट का नाम देता है और यही एकमात्र स्थान है जहाँ इसका नाम दिया गया है। providers.tf इससे xcsh प्रोवाइडर का api_url व्युत्पन्न करता है, जो जानबूझकर पर्यावरण में मौजूद किसी भी XCSH_API_URL को अधिलेखित कर देता है, और terraform/main.tf में एक postcondition plan को विफल कर देता है जब पर्यावरण किसी भिन्न टेनेंट का नाम देता है।

राज्य बदलने वाला कुछ भी चलाए बिना दोनों में से कोई भी आधा पढ़ें:

Terminal window
terraform output -raw xc_tenant # what the deployment targets
terraform output -raw xc_env_tenant # what your shell claims — diagnostic only
f5-sales-demo
f5-sales-demo
  1. इनिशियलाइज़ करें। बैकएंड कॉन्फ़िग कमिट नहीं किया गया है; अपना स्वयं का प्रदान करें।

    Terminal window
    terraform init -backend-config=backend.hcl
  2. पहला apply. यह Azure, CE साइट्स और रजिस्ट्रेशन टोकन बनाता है, और CEs को बूट करता है।

    Terminal window
    terraform apply
  3. CEs के रजिस्टर हो जाने के बाद फिर से apply करें। यह वैकल्पिक नहीं है, और इसका कारण नीचे दिया गया है, बजाय इसके कि आप उसे खुद खोजें।

    Terminal window
    terraform apply

फिर किसी को दिखाने से पहले इसे स्वस्थ साबित करें पर जाएँ।

रजिस्ट्रेशन अनुमोदन स्वचालित है, और apply फिर भी दो-चरणीय है

Section titled “रजिस्ट्रेशन अनुमोदन स्वचालित है, और apply फिर भी दो-चरणीय है”

रजिस्ट्रेशन अनुमोदन के लिए अब कंसोल में किसी मनुष्य की आवश्यकता नहीं है: xcsh_registration_approval रिसोर्स इसे करता है, और साइट मॉड्यूल यह हल करता है कि किस रजिस्ट्रेशन को अनुमोदित करना है।

इससे भी डिप्लॉयमेंट एकल हस्तक्षेप-मुक्त apply नहीं बन जाता, और पहली रन देखकर यह निष्कर्ष निकालने से पहले कि वह विफल हो गई, इसका कारण समझना उपयोगी है:

  • एक CE का रजिस्ट्रेशन ऑब्जेक्ट r-<uuid> नाम से होता है। इसका नाम कभी साइट के नाम पर नहीं होता, इसलिए plan के समय कोई भी नाम की भविष्यवाणी नहीं कर सकता।
  • रजिस्ट्रेशन केवल तब मौजूद होता है जब VM बूट हो चुका हो और vpm ने रजिस्टर कर लिया हो।
  • इसलिए पहला apply किसी भी अनुमोदन की योजना नहीं बनाता। CEs के रजिस्टर हो जाने के बाद फिर से apply करें और अनुमोदन बन जाते हैं।

terraform/main.tf इस क्रम को फ़ाइल के शीर्ष पर दर्ज करता है, जो प्रामाणिक संस्करण है — डिप्लॉय अनुक्रम उसी कोड के साथ रहता है जो उसे लागू करता है।

ऑपरेटर SSH एक बिल्ड-समय का निर्णय है

Section titled “ऑपरेटर SSH एक बिल्ड-समय का निर्णय है”

डिप्लॉयमेंट एप्लायंस के admin खाते में एक ऑपरेटर कुंजी लिखता है, जिसका लॉगिन शेल Site CLI है। यह cloud-init write_files द्वारा लिखी जाती है, जो पहले बूट पर एक बार चलती है।

Terminal window
terraform destroy

ऐप नेमस्पेस बचा रहता है: इसे पढ़ा जाता है, कभी प्रबंधित नहीं किया जाता, इसलिए destroy असंबंधित डेमो रखने वाले किसी नेमस्पेस को साथ नहीं ले जा सकता। रिसोर्स ग्रुप में बाकी सब कुछ हट जाता है।