Ubuntu TechHive
static-website-deployment-manual-to-automated-with-terraform.md
स्टैटिक वेबसाइट डिप्लॉयमेंट 🚀 - टेराफॉर्म (Terraform) के साथ मैनुअल से ऑटोमेटेड तक
article.विवरण

स्टैटिक वेबसाइट डिप्लॉयमेंट 🚀 - टेराफॉर्म (Terraform) के साथ मैनुअल से ऑटोमेटेड तक

reading.प्रगति 6 मिनट पढ़ें

स्टेटिक वेबसाइट डिप्लॉयमेंट का विवरण 🚀 - मैनुअल से टेराफॉर्म (Terraform) के साथ ऑटोमेटेड तक

AWS पर स्टेटिक वेबसाइट डिप्लॉयमेंट से लेकर टेराफॉर्म के साथ एडवांस्ड इंफ्रास्ट्रक्चर एज़ कोड तक

परिचय

यह दस्तावेज़ AWS पर मैन्युअल डिप्लॉयमेंट से लेकर Azure पर स्वचालित टेराफॉर्म डिप्लॉयमेंट तक, और टेराफॉर्म क्लाउड डेवलपमेंट किट (CDKTF) सहित टेराफॉर्म के साथ इंफ्रास्ट्रक्चर एज़ कोड (IaC) प्रथाओं में आगे बढ़ने की प्रक्रिया के बारे में बताता है।

भाग 1: AWS का उपयोग करके वेब-आधारित रिज़्यूमे बनाना और डिप्लॉय करना

चरण 0: मैन्युअल कार्य

S3, Route 53, AWS सर्टिफिकेट मैनेजर और CloudFront जैसी AWS सेवाओं का उपयोग करके एक साधारण रिज़्यूमे वेबसाइट डिप्लॉय करें। यह शुरुआती लोगों के लिए अनुकूल और लागत प्रभावी दृष्टिकोण क्लाउड डिप्लॉयमेंट की मूल बातें प्रदर्शित करता है।

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

डिप्लॉयमेंट के चरण

  1. HTML, CSS और JavaScript के साथ अपना रिज़्यूमे बनाएं।
  2. AWS S3 पर अपलोड करें और स्टेटिक वेबसाइट होस्टिंग के लिए कॉन्फ़िगर करें।
  3. कस्टम डोमेन के लिए Route 53 का उपयोग करें।
  4. AWS सर्टिफिकेट मैनेजर के साथ SSL/TLS सेटअप करें।
  5. एक CloudFront डिस्ट्रिब्यूशन बनाएं।
  • वैकल्पिक रूप से, निरंतर डिप्लॉयमेंट (Continuous Deployment) के लिए GitHub के साथ एकीकृत करें।

निष्कर्ष

  • लाभ: शुरुआती लोगों के लिए अनुकूल, लागत प्रभावी, अनुकूलन योग्य।
  • कमियां: मैन्युअल प्रक्रिया, AWS-विशिष्ट, नियमित रखरखाव की आवश्यकता।

भाग 2: टेराफॉर्म के साथ Azure ऑनलाइन रिज़्यूमे डिप्लॉयमेंट

चरण 1: हार्डकोडेड मानों के साथ टेराफॉर्म HCL

Azure के स्टोरेज अकाउंट, CDN और DNS का उपयोग करके टेराफॉर्म के साथ Azure पर एक ऑनलाइन रिज़्यूमे डिप्लॉय करें।

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

  • सक्रिय सब्सक्रिप्शन के साथ Azure अकाउंट
  • लोकल मशीन पर Terraform इंस्टॉल होना चाहिए।
  • टेराफॉर्म और Azure सेवाओं का बुनियादी ज्ञान।
  • Azure CLI इंस्टॉल होना चाहिए।
  • लोकल मशीन पर Git इंस्टॉल होना चाहिए।

डिप्लॉयमेंट के चरण

प्रोवाइडर कॉन्फ़िगरेशन, वेरिएबल्स और रिसोर्स ग्रुप, स्टोरेज अकाउंट, CDN प्रोफाइल और CDN एंडपॉइंट जैसे संसाधनों को सेटअप करें। डायनामिक कॉन्फ़िगरेशन के लिए 'ट्वेल्व-फैक्टर ऐप' सिद्धांतों और टेराफॉर्म इनपुट वेरिएबल्स का संदर्भ लें।

प्रोवाइडर कॉन्फ़िगरेशन

provider "azurerm" {
  features {}
}

वेरिएबल्स परिभाषा और लोकल मान

variable "location" {
  description = "वह Azure क्षेत्र जहाँ संसाधन बनाए जाएंगे।"
  default     = "East US"
}

variable "storage_account_name" {
  description = "रिज़्यूमे साइट होस्ट करने के लिए स्टोरेज अकाउंट का नाम।"
  default     = "achilledevopsdemo123" # सुनिश्चित करें कि यह अद्वितीय है
}

variable "resource_group_name" {
  description = "रिसोर्स ग्रुप का नाम।"
  default     = "AchilleDevOpsDemoRG"
}

variable "cdn_profile_name" {
  description = "CDN प्रोफाइल का नाम।"
  default     = "AchilleDevOpsCDNProfile"
}

variable "cdn_endpoint_name" {
  description = "CDN एंडपॉइंट का नाम।"
  default     = "AchilleDevOpsCDNEndpoint"
}

रिसोर्स ग्रुप

resource "azurerm_resource_group" "rg" {
  name     = var.resource_group_name
  location = var.location
}

स्टोरेज अकाउंट

resource "azurerm_storage_account" "resume" {
  name                     = var.storage_account_name
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = var.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
  static_website {
    index_document = "index.html"
  }
}

CDN प्रोफाइल और एंडपॉइंट

resource "azurerm_cdn_profile" "resume_cdn_profile" {
  name                = var.cdn_profile_name
  location            = var.location
  resource_group_name = azurerm_resource_group.rg.name
  sku                 = "Standard_Microsoft"
}

resource "azurerm_cdn_endpoint" "resume_cdn_endpoint" {
  name                = var.cdn_endpoint_name
  profile_name        = azurerm_cdn_profile.resume_cdn_profile.name
  location            = var.location
  resource_group_name = azurerm_resource_group.rg.name
  origin {
    name      = "resumeOrigin"
    host_name = local.storage_account_hostname
  }
}

आउटपुट

वेबसाइट URL और CDN एंडपॉइंट होस्टनेम

output "static_website_url" {
  value = azurerm_storage_account.resume.primary_web_endpoint
}

output "cdn_endpoint_hostname" {
  value = azurerm_cdn_endpoint.resume_cdn_endpoint.host_name
}

टेराफॉर्म का उपयोग करने के लाभ और कमियां

  • लाभ: इंफ्रास्ट्रक्चर एज़ कोड, प्रोवाइडर एग्नोस्टिक, स्टेट मैनेजमेंट, मॉड्यूलर डिज़ाइन।
  • कमियां: सीखने में समय लगना, स्टेट मैनेजमेंट में जटिलता, बड़े इंफ्रास्ट्रक्चर के लिए प्रदर्शन संबंधी समस्याएं।

भाग 3: टेराफॉर्म प्रगति

चरण 4: टेराफॉर्म CDK रूपांतरण

टेराफॉर्म क्लाउड डेवलपमेंट किट (CDKTF) आपको परिचित प्रोग्रामिंग भाषाओं का उपयोग करके क्लाउड इंफ्रास्ट्रक्चर को परिभाषित करने की अनुमति देता है। यह चरण पायथन वातावरण पर ध्यान केंद्रित करते हुए CDKTF के सेटअप और बुनियादी उपयोग को कवर करता है, जिसमें प्रारंभिक सेटअप, प्रोजेक्ट इनिशियलाइज़ेशन और संसाधन डिप्लॉयमेंट शामिल है।

विंडोज़ पर CDKTF सेटअप

शुरू करने से पहले, सुनिश्चित करें कि आपके मशीन पर Node.js और Python इंस्टॉल हैं। CDKTF इंफ्रास्ट्रक्चर एज़ कोड को निष्पादित करने के लिए दोनों पर निर्भर करता है।

तैयारी और इनिशियलाइज़ेशन

सबसे पहले, npm का उपयोग करके CDKTF CLI को विश्व स्तर पर इंस्टॉल करें, एक नया प्रोजेक्ट इनिशियलाइज़ करें और विकास के लिए अपना वातावरण तैयार करें।

npm install -g cdktf-cli
mkdir cdktf-project
cd cdktf-project
cdktf init --template="python-pip" --local --project-name="MyCDKTFProject" --project-description="My CDKTF project" --main-stack="main"

यह कमांड पायथन का उपयोग करके एक नया CDKTF प्रोजेक्ट इनिशियलाइज़ करती है। `–local` फ्लैग का उपयोग स्टेट को स्थानीय रूप से स्टोर करने के लिए किया जाता है, लेकिन प्रोडक्शन के लिए, आपको रिमोट स्टेट स्टोरेज को कॉन्फ़िगर करना चाहिए।

पायथन वर्चुअल एनवायरनमेंट सक्रिय करें

CDKTF प्रोजेक्ट्स डिपेंडेंसी को प्रबंधित करने के लिए पायथन वर्चुअल एनवायरनमेंट का उपयोग करते हैं। इसे निम्नलिखित कमांड के साथ सक्रिय करें:

source .venv/bin/activate
डिपेंडेंसी इंस्टॉल करें

अपने प्रोजेक्ट को इनिशियलाइज़ करने के बाद, AWS, Azure और Google Cloud के लिए CDKTF प्रोवाइडर्स सहित आवश्यक डिपेंडेंसी इंस्टॉल करें।

pip install cdktf cdktf-cli constructs
cdktf get

`cdktf get` `cdktf.json` में निर्दिष्ट प्रोवाइडर्स के लिए बाइंडिंग उत्पन्न करता है।

इंफ्रास्ट्रक्चर को परिभाषित करें

पायथन का उपयोग करके अपना इंफ्रास्ट्रक्चर बनाएं। उदाहरण के लिए, `main.py` में एक AWS S3 बकेट को परिभाषित करें:

from constructs import Construct
from cdktf import App, TerraformStack
from imports.aws import AwsProvider, s3

class MyStack(TerraformStack):
    def __init__(self, scope: Construct, ns: str):
        super().__init__(scope, ns)
        AwsProvider(self, 'Aws', region='us-east-1')
        
        s3.Bucket(self, 'MyBucket',
            bucket='my-unique-bucket-name'
        )

app = App()
MyStack(app, "my-stack")
app.synth()

यह कोड स्निपेट एक सिंगल S3 बकेट के साथ एक स्टैक को परिभाषित करता है।

इंफ्रास्ट्रक्चर डिप्लॉय करें

अपने इंफ्रास्ट्रक्चर को परिभाषित करने के बाद, CDKTF CLI का उपयोग करके इसकी योजना बनाएं और इसे डिप्लॉय करें।

cdktf plan
cdktf deploy

`cdktf plan` एक निष्पादन योजना उत्पन्न करता है, जो दिखाता है कि CDKTF क्या क्रियाएं करेगा। `cdktf deploy` आपके क्लाउड प्रोवाइडर में संसाधनों का प्रावधान करता है।

संसाधनों को साफ करें

अनावश्यक शुल्क से बचने के लिए, काम पूरा होने पर संसाधनों को नष्ट (destroy) कर दें।

cdktf destroy

`cdktf destroy` डिप्लॉय किए गए संसाधनों को हटा देता है।

CDKTF विंडोज़ सेटअप

विंडोज़ उपयोगकर्ताओं के लिए, प्रक्रिया समान है। सुनिश्चित करें कि कमांड निष्पादन के लिए PowerShell का उपयोग किया जाता है, और पायथन वर्चुअल एनवायरनमेंट को इसके साथ सक्रिय करें:

.venv\Scripts\Activate.ps1

ऊपर बताए गए बाकी चरणों का पालन करें, विंडोज़ वातावरण के लिए आवश्यक अनुसार पथ और कमांड को समायोजित करें।

आगे सीखने के लिए संसाधनों का भंडार

AWS, Azure, टेराफॉर्म, Git, GitHub, GitLab, HTML और CSS के लिए व्यापक लिंक और संसाधन प्रदान करता है।

बेहतर वेब डेवलपमेंट के लिए HTML और CSS संसाधन

HTML और CSS सीखने के लिए ट्यूटोरियल, पाठ्यक्रम और पुस्तकों पर प्रकाश डालता है।

निष्कर्ष

AWS पर एक स्टेटिक वेबसाइट डिप्लॉय करने से लेकर टेराफॉर्म और टेराफॉर्म CDK के साथ उन्नत इंफ्रास्ट्रक्चर एज़ कोड प्रथाओं को अपनाने तक, यह गाइड डेवलपर्स को क्लाउड इंफ्रास्ट्रक्चर को कुशलतापूर्वक प्रबंधित और स्केल करने के ज्ञान से लैस करती है।