लाभ:
- आईएसी अवधारणा और टेराफॉर्म के कार्य चक्र (इनिट, प्लान, अप्लाई, स्टेट, मॉड्यूल) को समझने की क्षमता और कृत्रिम बुद्धिमत्ता से सुरक्षित एचसीएल ड्राफ्ट तैयार करने की क्षमता
- लागू करने से पहले एक योजना के साथ प्रत्येक परिवर्तन की जांच करने और अप्रत्याशित नष्ट/प्रतिस्थापन लाइनों को पकड़ने की क्षमता
- रहस्यों को कोड से बाहर रखने, राज्य को सुरक्षित रखने और IAM अनुमतियों को न्यूनतम करने के सिद्धांतों को लागू करने की क्षमता
अतीत में, सर्वर स्थापित करना क्लाउड पैनल के माध्यम से क्लिक करने का मामला था: एक वर्चुअल मशीन बनाएं, नेटवर्क सेट करें, सुरक्षा नियम जोड़ें। यह विधि धीमी, त्रुटि-प्रवण और अप्राप्य थी - उसी वातावरण को दूसरी बार स्थापित करना लगभग असंभव था। आज, बुनियादी ढांचे को कोड के रूप में प्रबंधित किया जाता है। IaC (कोड के रूप में इन्फ्रास्ट्रक्चर) मैन्युअल के बजाय टेक्स्ट फ़ाइलों में सर्वर, नेटवर्क और डेटाबेस जैसे क्लाउड संसाधनों का वर्णन करने का एक दृष्टिकोण है। ये फ़ाइलें संस्करण नियंत्रण (Git) में बैठती हैं; आप देख सकते हैं कि किसने, कब और क्या बदला; आप एक ही कमांड से, बिल्कुल एक ही तरीके से, एक ही बुनियादी ढांचे को कई बार स्थापित कर सकते हैं।
सबसे आम IaC उपकरण टेराफॉर्म है। टेराफॉर्म आपके द्वारा लिखी गई परिभाषाओं को एचसीएल (हैशीकॉर्प कॉन्फ़िगरेशन लैंग्वेज - टेराफॉर्म की कॉन्फ़िगरेशन लैंग्वेज) नामक पठनीय भाषा में लेता है, उन्हें क्लाउड प्रदाता (एडब्ल्यूएस, एज़्योर, जीसीपी) एपीआई में अनुवादित करता है और संसाधन बनाता है। एआई एचसीएल को बहुत अच्छी तरह से जानता है और जल्दी से जटिल ब्लॉक तैयार करता है। लेकिन IaC में, गलती की कीमत बहुत अधिक होती है: एक गलत परिभाषा पूरे उत्पादन डेटाबेस को मिटा सकती है। इसीलिए टेराफॉर्म में सुनहरा नियम यह है कि हर बदलाव को लागू करने से पहले उसे एक 'योजना' के साथ देखा जाए।
टेराफॉर्म का रनटाइम
टेराफॉर्म तीन बुनियादी कमांड के साथ काम करता है - एआई आउटपुट को नियंत्रित करने के लिए इन्हें जानना एक शर्त है:
- `टेराफॉर्म इनिट`: प्रोजेक्ट शुरू करता है, आवश्यक प्रदाता प्लगइन्स डाउनलोड करता है।
- `टेराफॉर्म प्लान`: वर्तमान स्थिति की वांछित स्थिति से तुलना करता है और दिखाता है कि क्या जोड़ना है, क्या बदलना है, क्या हटाना है। कुछ भी लागू नहीं करता. यह सबसे महत्वपूर्ण सुरक्षा कदम है.
- `टेराफॉर्म लागू`: वास्तव में योजना को लागू करता है, संसाधनों का निर्माण/संशोधन करता है।
इसके अतिरिक्त, दो अवधारणाएँ महत्वपूर्ण हैं। राज्य (राज्य फ़ाइल): यह वह फ़ाइल है जहाँ टेराफ़ॉर्म अपने द्वारा प्रबंधित संसाधनों की वर्तमान स्थिति रखता है; इसे आमतौर पर एक दूरस्थ और बंद गोदाम में संग्रहीत किया जाता है ताकि दो लोग एक ही समय में इसे बदल या नष्ट न कर सकें। मॉड्यूल: पुन: प्रयोज्य कॉन्फ़िगरेशन पैकेज; उदाहरण के लिए, आप कई परियोजनाओं में "सेट अप ए नेटवर्क" मॉड्यूल का उपयोग कर सकते हैं।
युक्ति: टेराफॉर्म आउटपुट में सबसे खतरनाक संकेत योजना आउटपुट में नष्ट या -/+ (प्रतिस्थापन) लाइनें हैं। इनका मतलब है कि संसाधन हटा दिया जाएगा. यदि आप किसी योजना में अप्रत्याशित विनाश देखते हैं, तो कभी भी आवेदन न करें, पहले समझें कि यह क्यों दिखाई दिया।
चरण दर चरण: AI के साथ IaC लिखना
- वांछित बुनियादी ढांचे को स्पष्ट करें. "ईयू-सेंट्रल-1 पर एक वीपीसी, दो सबनेट, एक सुरक्षा समूह और एक टी3.माइक्रो ईसी2" जैसे ठोस बनें।
- प्रदाता और संस्करण निर्दिष्ट करें. कौन सा क्लाउड, कौन सा टेराफॉर्म और प्रदाता संस्करण? यदि आप कोई संस्करण निर्दिष्ट नहीं करते हैं, तो AI पुराना/असंगत सिंटैक्स लौटा सकता है।
- एचसीएल ड्राफ्ट तैयार करवाएं। वेरिएबल और आउटपुट का भी अनुरोध करें।
- रहस्य बाहर निकालो. पासवर्ड और चाबियाँ जैसे मान वेरिएबल और गुप्त वॉल्ट में जाने चाहिए, कोड में नहीं।
- `init` + `योजना` चलाएँ। योजना आउटपुट को पंक्ति दर पंक्ति पढ़ें; अप्रत्याशित विलोपन की जाँच करें.
- छोटी शुरुआत करें, धीरे-धीरे लागू करें। पहले इसे एक पृथक परीक्षण खाते/वातावरण में लागू करें।
सुरक्षा: IaC-विशिष्ट जोखिम
IaC जितना शक्तिशाली है उतना ही जोखिम भरा भी है। तीन महत्वपूर्ण बिंदु:
- स्टेट फाइल में एक राज है. टेराफ़ॉर्म स्थिति कभी-कभी संवेदनशील मान, जैसे डेटाबेस पासवर्ड, को प्लेनटेक्स्ट में रखती है। राज्य को कभी भी सार्वजनिक भंडार में न रखें; एक एन्क्रिप्टेड, प्रतिबंधित-पहुँच वाले रिमोट बैकएंड का उपयोग करें।
- एचसीएल में रहस्य न छिपाएं. पासवर्ड='प्रोड123' जैसी पंक्तियाँ Git इतिहास में स्थायी रूप से लिखी जाती हैं। इसके बजाय, एक वेरिएबल का उपयोग करें और रनटाइम पर पर्यावरण वेरिएबल (TF_VAR_...) या गुप्त वॉल्ट से मान दें।
- बहुत व्यापक IAM अनुमति. एआई कभी-कभी "इसे कार्यान्वित करने" के लिए एक्शन: "*" (हर चीज़ की अनुमति दें) जैसे ब्लॉक तैयार करता है। यह एक भेद्यता है; अनुमति को आवश्यक न्यूनतम तक सीमित करें।
ध्यान दें: एक बार जब कोई रहस्य Git इतिहास में प्रवेश कर जाता है, तो यह अतीत में रहता है और इससे समझौता किया जा सकता है, भले ही आप फ़ाइल हटा दें। यदि आप गलती से ऐसा करते हैं, तो तुरंत रद्द करें और रहस्य को घुमाएँ; केवल हटाना पर्याप्त नहीं है.
जोखिम भरी योजना संकेत तालिका
योजना का प्रिंटआउट
मतलब
क्या करें?
+बनाएँ
नये संसाधन जोड़े जायेंगे
हालाँकि, आम तौर पर सुरक्षित है, समीक्षा करें
~ यथास्थान अद्यतन करें
साइट पर स्रोत बदल जाएगा
प्रभाव सत्यापित करें (क्या कोई आउटेज होगा?)
-/+ बदलें
हटा दिया जाएगा और पुनः बनाया जाएगा
सावधानी: डेटा हानि हो सकती है
- नष्ट करना
संसाधन नष्ट हो जायेंगे
रोकें: यदि आप इसकी अपेक्षा नहीं कर रहे हैं तो कभी भी आवेदन न करें
तीन मिनी मामले
केस 1 - 2 दिन का काम 3 घंटे में। एक टीम एक नया परीक्षण वातावरण (VPC, सबनेट, RDS डेटाबेस, ECS क्लस्टर) स्थापित करने के लिए टेराफॉर्म लिखने जा रही थी, लेकिन वे अभी HCL में चले गए थे। उन्होंने एआई की वास्तुकला और संस्करणों का वर्णन किया और एक मॉड्यूलर ब्लूप्रिंट तैयार किया। उन्होंने प्रत्येक मॉड्यूल को योजना के साथ सत्यापित किया और इसे 3 घंटे में चालू कर दिया; उन्हें मैन्युअल परीक्षण और त्रुटि में दो दिन लगेंगे।
केस 2 - योजना में विलोपन हुआ। एक इंजीनियर ने एआई-जनरेटेड अपडेट कोड लागू किए बिना एक योजना चलाई। आउटपुट में शामिल है -/+ उत्पादन डेटाबेस के लिए प्रतिस्थापित करें - एआई ने एक गैर-प्रतिस्थापन योग्य फ़ील्ड को बदलने का प्रयास किया, जिसका अर्थ डेटाबेस को हटाना और पुनः बनाना था। इंजीनियर ने आवेदन बंद कर दिया और परिवर्तन को सुरक्षित विधि में बदल दिया। योजना बनाने की आदत ने आपदा को रोका।
केस 3 - छिपा हुआ गुप्त रहस्य। एक जूनियर, YZ ने db_password = "S3cret!" जारी किया उसने लाइन को वैसे ही प्रतिबद्ध किया और उसे आगे बढ़ाया। कोड समीक्षा में पकड़ा गया; पासवर्ड तुरंत रद्द कर दिया गया और बदल दिया गया, मान को एक वेरिएबल में ले जाया गया और गुप्त वॉल्ट से फीड किया गया। पाठ: एचसीएल में कभी भी सादे पाठ वाले रहस्य नहीं होते।
चार प्रतिलिपि योग्य टेम्पलेट
1) बुनियादी ढांचे का मसौदा तैयार करना:
टेराफॉर्म (संस्करण ~> 1.7) के साथ [क्लाउड: एडब्ल्यूएस] पर निम्नलिखित बुनियादी ढांचे को लिखें: [स्रोत सूची]। क्षेत्र [एक्स]। नियम: - सभी संवेदनशील मानों को परिवर्तनीय बनाएं, उन्हें एचसीएल में एम्बेड न करें। - प्रदाता संस्करण (आवश्यक_प्रदाता) को ठीक करें। - आईएएम अनुमतियों को कम करें, "*" का उपयोग न करें। - आउटपुट के रूप में [एक्स, वाई] लौटाएं। मॉड्यूलर रूप से और स्पष्टीकरण के साथ कोड दें।
2) योजना आउटपुट की व्याख्या करना:
नीचे 'टेराफ़ॉर्म प्लान' आउटपुट का विश्लेषण करें। मुझे सूचीबद्ध करें:(1) कौन से संसाधन जोड़े/बदले/हटाए गए,(2) डेटा हानि या रुकावट के जोखिम वाली पंक्तियाँ,(3) 3 प्रश्न जो मुझे आवेदन करने से पहले पूछना चाहिए। योजना: [आउटपुट]
3) सुरक्षा के लिए मौजूदा एचसीएल की जांच करें:
सुरक्षा के लिए निम्नलिखित टेराफ़ॉर्म कोड की जाँच करें: एम्बेडेड गुप्त, अत्यधिक व्यापक IAM अनुमति, खुला नेटवर्क नियम (0.0.0.0/0), अनएन्क्रिप्टेड स्टोरेज? प्रत्येक निष्कर्ष को महत्व और सुधार के क्रम में लिखें। कोड: [एचसीएल]
4) दोहराव वाले कोड को मॉड्यूल में बदलें:
निम्नलिखित दोहराव वाले टेराफ़ॉर्म कोड को पुन: प्रयोज्य मॉड्यूल में बदलें: कौन से मान चर होने चाहिए, मॉड्यूल इंटरफ़ेस क्या होना चाहिए? उदाहरण उपयोग भी दिखाएँ। कोड: [एचसीएल]
कमजोर संकेत/मजबूत संकेत
कमजोर: "टेराफॉर्म के साथ एक डेटाबेस बनाएं।"
परिणाम: अस्पष्ट कौन सा क्लाउड, कौन सा इंजन, कौन सा संस्करण, एन्क्रिप्टेड या नहीं; लीगेसी सिंटैक्स के साथ, एआई एक सार्वजनिक रूप से उपलब्ध उदाहरण प्रदान कर सकता है जो पासवर्ड को कोड में एम्बेड करता है।
मजबूत: "टेराफॉर्म ~> 1.7 के साथ एडब्ल्यूएस पर एक आरडीएस पोस्टग्रेएसक्यूएल 15 इंस्टेंस बनाएं। पासवर्ड वैरिएबल बनाएं, इसे कोड में एम्बेड न करें। स्टोरेज एन्क्रिप्टेड है, केवल निजी सबनेट से पहुंच योग्य है, सार्वजनिक नहीं। प्रदाता संस्करण को ठीक करें। आउटपुट के रूप में एंडपॉइंट लौटाएं।"
अंतर: दूसरा संकेत इंजन, संस्करण, एन्क्रिप्शन, नेटवर्क बाधा और गुप्त नियम देता है - आउटपुट सुरक्षित है और उत्पाद के करीब है।
सामान्य गलतियाँ
- बिना `योजना' बनाये `लागू' करना। IaC में सबसे महंगी गलती; हमेशा पहले योजना बनाएं.
- एचसीएल में एम्बेडिंग रहस्य। Git इतिहास में स्थायी रिसाव पैदा करता है।
- भंडारण राज्य असुरक्षित. एक अनएन्क्रिप्टेड, अनलॉक, सार्वजनिक स्थिति एक आपदा है।
- संस्करण को ठीक नहीं किया जा रहा है. संस्करण निर्दिष्ट किए बिना प्रदाता का उपयोग करने से भविष्य में अचानक विफलताएँ हो सकती हैं।
- *`कार्रवाई: व्यापक अनुमति जैसे ""`।** कम से कम विशेषाधिकार के सिद्धांत का उल्लंघन करता है।
- अप्रत्याशित `नष्ट` को अनदेखा करना। बिना किसी प्रश्न के योजना में डिलीट लाइनों को लागू करना।
संक्षेप में
IaC बुनियादी ढांचे को दोहराने योग्य, संस्करण योग्य और श्रव्य कोड में बदल देता है; सबसे आम उपकरण टेराफॉर्म है। एआई तेजी से एचसीएल स्टब्स तैयार करता है, लेकिन आपको संस्करण, क्लाउड-विशिष्ट विवरण और सुरक्षा नियम प्रदान करने होंगे। टेराफॉर्म में अचूक नियम: प्रत्येक परिवर्तन को एक योजना के साथ देखना, अप्रत्याशित विलोपन पर सवाल उठाना, रहस्यों को कोड से दूर रखना और राज्य को सुरक्षित रखना। किसी योजना आउटपुट में नष्ट और प्रतिस्थापित पंक्तियाँ वे स्थान हैं जिन्हें सबसे अधिक ध्यान से पढ़ा जाना चाहिए।
आवेदन कार्य
ऊपर दिए गए "जनरेट इंफ्रास्ट्रक्चर स्केच" टेम्पलेट का उपयोग करके एआई को एक छोटा बुनियादी ढांचा (उदाहरण के लिए एक स्टोरेज बकेट और एक एक्सेस पॉलिसी) तैयार करने को कहें। फिर: (1) कोड में अंतर्निहित गुप्त या * अनुमतियों के लिए "वेटिंग" टेम्पलेट की जाँच करें; (2) यदि संभव हो, तो परीक्षण खाते में init +योजना चलाएँ और योजना आउटपुट को "योजना व्याख्या" टेम्पलेट के साथ पढ़ें; (3) किसी भी अप्रत्याशित विलोपन/परिवर्तन पर ध्यान दें।
चेकलिस्ट
- [ ] मैंने अपने प्रॉम्प्ट में क्लाउड, टेराफॉर्म/प्रदाता संस्करण और एन्क्रिप्शन/नेटवर्क बाधाएं जोड़ीं।
- [ ] कोड में कोई सादा पाठ रहस्य नहीं है; परिशुद्धता मान चर.
- [ ] मैंने IAM/अनुमतियों को न्यूनतम अनुमतियों तक सीमित कर दिया, * मैंने इसका उपयोग नहीं किया।
- [ ] मैंने आवेदन करने से पहले योजना चलाई और आउटपुट लाइन को लाइन दर लाइन पढ़ा।
- [ ] मैंने सत्यापित किया कि योजना में कोई अप्रत्याशित विनाश/प्रतिस्थापन नहीं है।
- [ ] मुझे यकीन है कि राज्य को एन्क्रिप्टेड, लॉक और प्रतिबंधित बैकएंड में रखा गया है।