Terraform Best Practices
Terraform consultingTwitter @antonbabenkoTerraform Weekly
اردو (Urdu)
اردو (Urdu)
  • خوش آمدید
  • بنیادی خیال
  • کوڈ کی ساخت
  • کوڈ کی ساخت کی مثالیں
    • ٹیراگرنٹ (Terragrunt)
    • ٹیرافارم (Terraform)
      • ٹیرافارم (Terraform) کے ساتھ چھوٹے سائز کا انفراسٹرکچر
      • ٹیرافارم (Terraform) کے ساتھ درمیانے سائز کا انفراسٹرکچر
      • ٹیرافارم (Terraform) کے ساتھ بڑے سائز کا انفراسٹرکچر
  • نامزدگی کے اصول
  • کُوڈ اسٹائلنگ
  • عمومی سوالات
  • حوالہ جات
  • ٹیرافارم (Terraform)کنفیگریشنز لکھنا
  • ورکشاپ
Powered by GitBook
On this page
  • ریسورس (Resource)
  • ریسورس کے ماڈیول (Resource module)
  • انفراسٹرکچر ماڈیول (Infrastructure module)
  • ترکیب (Composition)
  • ڈیٹا سورس (Data source)
  • ریموٹ حالت (Remote state)
  • فراہم کنندہ، فراہم کرنے والا، وغیرہ (Provider, provisioner, etc)
  • یہ کیوں اتنا مشکل ہے؟ (?Why so difficult)
Export as PDF

بنیادی خیال

Previousخوش آمدیدNextکوڈ کی ساخت

Last updated 1 year ago

ٹیرافارم (Terraform) کی دستاویزات تمام پہلوؤں کو تفصیل سے بیان کرتی ہیں۔ اس سیکشن کے باقی حصوں کو سمجھنے کے لیے

یہ سیکشن ان اہم بنیادی خیالات کی وضاحت کرتا ہے جو کتاب میں استعمال کیے جاتے ہیں

ریسورس (Resource)

ریسورس (Resource) aws_vpc, aws_db_instanceوغیرہ ہوتے ہیں۔ ایک ریسورس کسی provider سے تعلق رکھتا ہے، arguments قبول کرتا ہے، خصوصیات آؤٹ پٹ(outputs) کرتا ہے، اور اس کا ایک lifecycle ہوتا ہے۔ ایک ریسورس کو بنایا، حاصل کیا، اپ ڈیٹ کیا اور ختم کیا جا سکتاہے

ریسورس کے ماڈیول (Resource module)

ریسورس کے ماڈیول( Resource module) منسلک ریسورسز Resources کا ایک مجموعہ ہوتاہے جو مل کر مشترکہ کارروائی انجام دیتے ہیں (مثال کے طور پر، VPC، subnets ، NAT gateway وغیرہ بناتا ہے)۔ یہ provider کی ترتیب پر منحصر ہے، جس کی وضاحت اس میں کی جا سکتی ہے، یا اعلیٰ سطح کے ڈھانچے میں (مثال کے طور پر، انفراسٹرکچر (module) میں)

انفراسٹرکچر ماڈیول (Infrastructure module)

ایک انفراسٹرکچر ماڈیول، ریسورس ماڈیولز کا ایک مجموعہ ہے، جو منطقی طور پر منسلک نہیں ہو سکتے، لیکن موجودہ صورتحال/پروجیکٹ/سیٹ اپ میں ایک ہی مقصد پورا کرتے ہیں۔ یہ provider کے لیے ترتیب کو متعین کرتا ہے، جو ڈاون اسٹریم ریسورس ماڈیولز اور ریسورس کو پاس کر دیا جاتا ہے۔ یہ عام طور پر ایک منطقی سیپریٹر (مثال کے طور پر، AWS Region, Google Project) کے ساتھ کام کرنے کے لیے محدود ہوتا ہے۔

مثال کے طور پر، ماڈیول میں اور جیسے ریسورس ماڈیولز استعمال ہوتے ہیں تاکہ پر کو چلانے کے لئے ضروری انفراسٹرکچر کو بنایا جا سکے۔

دوسری مثال ماڈیول کی ہے جہاں کی طرف سے مختلف ماڈیولز کا اشتراک ہوتا ہے تاکہ انفراسٹرکچر کو منظم کیا جا سکے اور Docker کے ریسورس کا استعمال کیا جا سکتا ہے تاکہ ایک ہی سیٹ میں images Docker کو تخلیق، منتقلی، اور تنصیب کیا جا سکے ۔

ترکیب (Composition)

ترکیب انفراسٹرکچر ماڈیولز کا ایک مجموعہ ہے، جو کئی منطقی طور پر الگ علاقوں (مثال کے طور پر،Regions AWS ، متعدد AWS اکاؤنٹس) میں پھیلا ہو سکتا ہے۔ ترکیب کو پوری تنظیم یا پروجیکٹ کے لیے درکار مکمل انفراسٹرکچر کی وضاحت کے لیے استعمال کیا جاتا ہے۔

ترکیب میں انفراسٹرکچر ماڈیولز ہوتے ہیں، جن میں ریسورس ماڈیولز ہوتے ہیں، جو انفرادی ریسورس کو بناتے ہیں۔

ڈیٹا سورس (Data source)

ڈیٹا سورس (Data source) ایک ریڈ-اونلی read-only آپریشن انجام دیتا ہے اور provider کی ترتیب پر منحصر ہے، یہ ایک ریسورس ماڈیول اور ایک انفراسٹرکچر ماڈیول میں استعمال ہوتاہے۔

ڈیٹا سورس terraform_remote_state اعلیٰ سطحی ماڈیولز اور ترکیبوں کے لیے گلو کے طور پر کام کرتا ہے۔

ریموٹ حالت (Remote state)

فراہم کنندہ، فراہم کرنے والا، وغیرہ (Provider, provisioner, etc)

پروودرس Providers، پرووسونیرس provisioners، اور کچھ دوسرے مصطلحات کو آفیشل دستاویز میں بہت اچھی طرح وضاحت کی گئی ہے اور یہاں پر اسے دہرانے کا کوئی موقع نہیں ہے۔ میرے خیال میں، ان کا زیادہ Terraform modules لکھنے سے کچھ تعلق نہیں ہے۔

یہ کیوں اتنا مشکل ہے؟ (?Why so difficult)

مالیکیولز (ریسورس ماڈیولز اور انفراسٹرکچر ماڈیولز) میں ڈیٹا تک رسائی ماڈیولز کے آؤٹ پٹس اور data sources کا استعمال کرکے کی جاتی ہے۔

اوپر بیان کردہ چیزوں کو pseudo-ریلیشنز کرنے میں رکھیں تو یہ کچھ اس طرح نظر آ سکتا ہے:

composition-1 {
  infrastructure-module-1 {
    data-source-1 => d1

    resource-module-1 {
      data-source-2 => d2
      resource-1 (d1, d2)
      resource-2 (d2)
    }

    resource-module-2 {
      data-source-3 => d3
      resource-3 (d1, d3)
      resource-4 (d3)
    }
  }
}

کسی بیرونی پروگرام کو ڈیٹا سورس کے طور پر کام کرنے کی اجازت دیتا ہے، جو ٹیرافارم Terraform ترتیب میں کہیں اور استعمال کے لیے غیر معمولی ڈیٹا کو بے نقاب کرتا ہے۔ ماڈیول سے ایک مثال یہاں ہے جہاں فائل کا نام ایک بیرونی Python اسکرپٹ کو کال کرکے کمپیوٹ کیا جاتا ہے۔

ہتپ ڈیٹا سورس دیئے گئے URL پر HTTP GET کی درخواست کرتا ہے اور ردعمل کے بارے میں معلومات حاصل کرتا ہے جو اکثر endpoints سے معلومات حاصل کرنے کے لیے مفید ہوتا ہے جہاں Terraform provider موجود نہیں ہوتا ہے۔

انفراسٹرکچر ماڈیولز اور ترتیبوں کو اپنی کو ایک remote جگہ میں جمع رکھنی چاہئے جہاں دوسرے لوگوں کی طرف سے اسے ایک کنٹرول طریقے سے استعمال کیا جا سکتا ہے (مثلاً، specify ACL, versioning, logging)۔

انفرادی ریسورس بنیادی ڈھانچے میں ایٹموں کی طرح ہوتے ہیں، جب کہ ریسورس ماڈیولز مالیکیولز (ایٹموں پر مشتمل) ہوتے ہیں۔ ماڈیول سب سے چھوٹی ورژن والی اور شیئر کرنے والی اکائی ہے۔ اس میں دلائل کی ایک درست فہرست ہے، جو اس طرح کی اکائی کے لیے مطلوبہ کام کرنے کے لیے بنیادی منطق کو استعمال کرتی ہے۔ مثال کے طور پر، ماڈیول ان پٹ کی بنیاد پر aws_security_group اور aws_security_group_rule ریسورس بناتا ہے۔ یہ ریسورس ماڈیول انفراسٹرکچر ماڈیول بنانے کے لیے دیگر ماڈیولز کے ساتھ مل کر استعمال کیا جا سکتا ہے۔

ترکیبات کے درمیان رسائی اکثر ریموٹ سٹیٹ data sources کا استعمال کرکے کی جاتی ہے۔

اسے غور سے پڑھیں۔
AWS VPC Terraform module
terraform-aws-atlantis
terraform-aws-vpc
terraform-aws-security- group
AWS Fargate
Atlantis
terraform-aws-cloudquery
terraform-aws-modules
بیرونی ڈیٹا
terraform-aws-lambda
http
Terraform state
terraform-aws-security-group
پیکجوں کے درمیان ڈیٹا شیئر کرنے کے کئی طریقے ہیں۔
Simple infrastructure composition