د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

ډیری خلک پیژني او په خپلو ورځني کارونو کې Terraform کاروي، مګر د دې لپاره غوره تمرینونه لاهم ندي رامینځته شوي. هر ټیم باید خپل طریقې او طریقې ایجاد کړي.

ستاسو زیربنا تقریبا یقینا په ساده ډول پیل کیږي: یو څو سرچینې + یو څو پراختیا کونکي. د وخت په تیریدو سره، دا په هر ډول لارښوونو کې وده کوي. ایا تاسو د Terraform ماډلونو کې د سرچینو ګروپ کولو لارې لټوئ، کوډ په فولډرونو کې تنظیم کړئ، او نور څه شی ممکن غلط شي؟ (مشهور وروستي کلمې)

وخت تیریږي او تاسو داسې احساس کوئ چې ستاسو زیربنا ستاسو نوی پالتو دی، مګر ولې؟ تاسو په زیربنا کې د نه منلو وړ بدلونونو په اړه اندیښمن یاست ، تاسو زیربنا او کوډ ته لمس کولو څخه ویره لرئ - په پایله کې ، تاسو نوي فعالیت ځنډوي یا کیفیت کموي ...

په Github کې د AWS لپاره د Terraform ټولنې ماډلونو ټولګه اداره کولو او په تولید کې د Terraform اوږدمهاله ساتنې له دریو کلونو وروسته ، انتون بابینکو چمتو دی چې خپله تجربه شریکه کړي: د TF ماډلونو لیکلو څرنګوالی ترڅو دا په راتلونکي کې زیان ونه رسوي.

د خبرو په پای کې، ګډونوال به په Terraform کې د سرچینو مدیریت اصولو، په Terraform کې د ماډلونو سره تړلي غوره عملونه، او د زیربنا مدیریت سره تړلي ځینې دوامداره ادغام اصولو سره ډیر اشنا شي.

دادعا: زه یادونه کوم چې دا راپور د نومبر 2018 نیټه ده - 2 کاله دمخه تیر شوي. د Terraform 0.11 نسخه چې په راپور کې بحث شوی نور نور ملاتړ نه کوي. په تیرو 2 کلونو کې ، 2 نوي ریلیزونه خپاره شوي چې ډیری نوښتونه ، اصلاحات او بدلونونه پکې شامل دي. مهرباني وکړئ دې ته پام وکړئ او اسناد چیک کړئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

سرچینې:

زما نوم انتون بابینکو دی. ستاسو څخه ځینې شاید هغه کوډ کاروي چې ما لیکلي. زه به اوس د دې په اړه د پخوا په پرتله ډیر باور سره خبرې وکړم، ځکه چې زه احصایو ته لاسرسی لرم.

زه په Terraform کې کار کوم او د 2015 راهیسې د Terraform او Amazon پورې اړوند د خلاصې سرچینې لوی شمیر پروژو کې فعال برخه اخیستونکی او مرسته کونکی یم.

له هغه وخت راهیسې ما کافي کوډ لیکلی دی چې دا په زړه پورې ډول کېږدم. او زه به هڅه وکړم چې تاسو ته اوس پدې اړه ووایم.

زه به د Terraform سره د کار کولو پیچلتیاو او ځانګړتیاو په اړه وغږیږم. مګر دا واقعیا د HighLoad موضوع نه ده. او اوس تاسو به پوه شئ چې ولې.

د وخت په تیریدو سره ما د Terraform ماډلونو لیکل پیل کړل. کاروونکو پوښتنې لیکلي، ما بیا لیکلي. بیا ما د پری کمیټ هک په کارولو سره د کوډ فارمیټ کولو لپاره مختلف اسانتیاوې لیکلي.

ډیرې په زړه پورې پروژې وې. زه د کوډ تولید خوښوم ځکه چې زه کمپیوټر خوښوم چې زما او پروګرامر لپاره ډیر کار وکړي، نو زه اوس مهال د بصری ډیاګرامونو څخه د ټیرفارم کوډ جنریټر کار کوم. شاید ستاسو څخه ځینو یې لیدلي وي. دا د تیرونو سره ښکلي بکسونه دي. او زه فکر کوم چې دا خورا ښه دی که تاسو کولی شئ د "صادراتو" تڼۍ کلیک وکړئ او دا ټول د کوډ په توګه ترلاسه کړئ.

زه د اوکراین څخه یم. زه د ډیرو کلونو لپاره په ناروې کې ژوند کوم.

همدارنګه، د دې راپور لپاره معلومات د هغو خلکو څخه راټول شوي چې زما نوم پیژني او ما په ټولنیزو شبکو کې پیدا کوي. زه تقریبا تل ورته مستعار نوم لرم.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

https://github.com/terraform-aws-modules
https://registry.terraform.io/namespaces/terraform-aws-modules

لکه څنګه چې ما یادونه وکړه ، زه د Terraform AWS ماډلونو اصلي ساتونکی یم ، کوم چې په GitHub کې یو له ترټولو لوی زیرمو څخه دی چیرې چې موږ د خورا عام کارونو لپاره ماډلونه کوربه کوو: VPC ، Autoscaling ، RDS.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او هغه څه چې تاسو اوس اوریدلي دي خورا بنسټیز دي. که تاسو شک لرئ چې تاسو پوهیږئ چې Terraform څه شی دی، نو دا به غوره وي چې خپل وخت په بل ځای کې تیر کړئ. دلته به ډیر تخنیکي اصطلاحات وي. او ما د راپور کچه لوړه اعلانولو څخه ډډه وکړه. دا پدې مانا ده چې زه کولی شم د ډیرو توضیحاتو پرته د ټولو ممکنه شرایطو په کارولو سره خبرې وکړم.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

Terraform په 2014 کې د یو افادیت په توګه راښکاره شو چې تاسو ته اجازه درکوي د کوډ په توګه زیربنا ولیکئ، پلان او اداره کړئ. دلته کلیدي مفهوم "د کوډ په توګه زیربنا ده."

ټول اسناد، لکه څنګه چې ما وویل، لیکل شوي دي terraform.io. زه امید لرم چې ډیری خلک د دې سایټ په اړه پوهیږي او اسناد یې لوستلي وي. که داسې وي، نو تاسو په سم ځای کې یاست.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دا هغه څه دي چې د منظم Terraform ترتیب کولو فایل ورته ښکاري ، چیرې چې موږ لومړی ځینې متغیرونه تعریف کوو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

پدې حالت کې موږ "aws_region" تعریف کوو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

بیا موږ تشریح کوو چې کومې سرچینې موږ غواړو رامینځته کړو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

موږ ځینې کمانډونه چلوو ، په ځانګړي توګه "terraform init" د انحصار او چمتو کونکو بارولو لپاره.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او موږ د "terraform Apply" کمانډ چلوو ترڅو وګورو چې ایا ټاکل شوي ترتیب د هغه سرچینو سره سمون لري چې موږ رامینځته کړي. له هغه ځایه چې موږ مخکې هیڅ شی نه دی رامینځته کړی، ټیرفارم موږ ته هڅوي چې دا سرچینې رامینځته کړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

موږ دا تایید کوو. په دې توګه موږ د seasnail په نوم یو بالټ جوړوو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

یو شمیر ورته اسانتیاوې هم شتون لري. ستاسو څخه ډیری څوک چې ایمیزون کاروي د AWS CloudFormation یا د ګوګل کلاوډ ډیپلیمینټ مدیر یا د Azure سرچینې مدیر پیژني. د دوی هر یو د دې عامه بادل چمتو کونکو کې د سرچینو اداره کولو لپاره یو ډول خپل پلي کول لري. Terraform په ځانګړي ډول ګټور دی ځکه چې دا تاسو ته اجازه درکوي له 100 څخه ډیر چمتو کونکي اداره کړئ. (نور جزیات دلته)

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

هغه اهداف چې ترافارم له پیل څخه تعقیب کړي دي:

  • Terraform د سرچینو یو واحد لید وړاندې کوي.
  • تاسو ته اجازه درکوي د ټولو عصري پلیټ فارمونو ملاتړ وکړئ.
  • او Terraform له پیل څخه د یوټیلټي په توګه ډیزاین شوی و چې تاسو ته اجازه درکوي زیربنا په خوندي او اټکل سره بدله کړئ.

په 2014 کې، په دې شرایطو کې "د وړاندوینې وړ" کلمه خورا غیر معمولي ښکاري.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

Terraform یو نړیوال کار دی. که تاسو API لرئ، نو تاسو کولی شئ په بشپړ ډول هرڅه کنټرول کړئ:

  • تاسو کولی شئ له 120 څخه ډیر چمتو کونکي وکاروئ ترڅو هرڅه چې تاسو یې غواړئ اداره کړئ.
  • د مثال په توګه، تاسو کولی شئ د GitHub ذخیره کولو ته د لاسرسي تشریح کولو لپاره Terraform وکاروئ.
  • تاسو حتی کولی شئ په جیرا کې کیګونه جوړ او بند کړئ.
  • تاسو کولی شئ د نوي ریلیک میټریکونه اداره کړئ.
  • تاسو حتی کولی شئ په ډراپ باکس کې فایلونه رامینځته کړئ که تاسو واقعیا غواړئ.

دا ټول د Terraform چمتو کونکو په کارولو سره ترلاسه شوي ، کوم چې خلاص API لري چې په Go کې تشریح کیدی شي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

راځئ چې ووایو موږ د Terraform کارول پیل کړل، په سایټ کې ځینې اسناد ولوستل، ځینې ویډیوګانې یې ولیدل، او د main.tf لیکل یې پیل کړل، لکه څنګه چې ما په تیرو سلایډونو کې ښودلې.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او هرڅه عالي دي ، تاسو یو فایل لرئ چې VPC رامینځته کوي.

که تاسو غواړئ یو VPC جوړ کړئ، نو تاسو نږدې دا 12 لینونه مشخص کړئ. تشریح کړئ چې په کومه سیمه کې تاسو غواړئ رامینځته کړئ، د IP پتې کوم cidr_block کارول کیږي. بس نور څه نه.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

په طبیعي توګه، پروژه به په تدریجي ډول وده وکړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او تاسو به هلته د نویو شیانو یوه ډله اضافه کړئ: سرچینې، د معلوماتو سرچینې، تاسو به د نوي چمتو کونکو سره یوځای کړئ، ناڅاپه تاسو غواړئ د خپل GitHub حساب کې د کاروونکو اداره کولو لپاره Terraform وکاروئ، او داسې نور. تاسو ممکن مختلف وکاروئ. د DNS چمتو کونکي، هرڅه تیر کړئ. Terraform دا اسانه کوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

راځئ چې لاندې مثال ته وګورو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

تاسو په تدریج سره انټرنیټ_ګیټ وے اضافه کړئ ځکه چې تاسو د خپل VPC څخه سرچینې غواړئ چې انټرنیټ لاسرسی ولري. دا یو ښه نظر دی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

پایله دا ده main.tf:

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دا د main.tf پورتنۍ برخه ده.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دا د main.tf لاندې برخه ده.

بیا تاسو subnet اضافه کړئ. تر هغه وخته چې تاسو غواړئ د NAT دروازې، لارې، روټینګ میزونه او د نورو فرعي نیټونو یوه ډله اضافه کړئ، تاسو به 38 لینونه نه لرئ، مګر نږدې 200-300 لینونه.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دا دی، ستاسو د اصلي.tf فایل په تدریجي ډول وده کوي. او ډیری وختونه خلک هرڅه په یوه فایل کې اچوي. 10-20 Kb په main.tf کې ښکاري. تصور وکړئ چې 10-20 Kb د متن مینځپانګه ده. او هر څه په هر څه پورې تړلي دي. دا په تدریج سره کار کول ستونزمن کیږي. 10-20 Kb یو ښه کاروونکي قضیه ده، ځینې وختونه ډیر. او خلک تل فکر نه کوي چې دا بد دی.

لکه څنګه چې په منظم پروګرام کولو کې، د بیلګې په توګه د کوډ په توګه زیربنا نه ده، موږ د مختلفو ټولګیو، کڅوړو، ماډلونو، ګروپینګونو څخه کار اخلو. Terraform تاسو ته اجازه درکوي ډیر ورته شی ترسره کړئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

  • کوډ وده کوي.
  • د سرچینو تر مینځ انحصار هم وده کوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او موږ یو لوی، لوی اړتیا لرو. موږ پوهیږو چې موږ نور د دې په څیر ژوند نشو کولی. زموږ کوډ خورا لوی کیږي. 10-20 Kb، البته، خورا پراخ نه دی، مګر موږ یوازې د شبکې سټیک په اړه خبرې کوو، د بیلګې په توګه تاسو یوازې د شبکې سرچینې اضافه کړې. موږ د اپلیکیشن لوډ بیلانسر ، د ځای په ځای کولو ES کلسټر ، کبرنیټس او نور په اړه خبرې نه کوو ، چیرې چې 100 Kb په اسانۍ سره اوبدل کیدی شي. که تاسو دا ټول ولیکئ، تاسو به ډیر ژر پوه شئ چې Terraform د Terraform ماډلونه چمتو کوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د Terraform ماډلونه په ځان کې د Terraform ترتیب دی چې د یوې ډلې په توګه اداره کیږي. دا ټول هغه څه دي چې تاسو ورته اړتیا لرئ د Terraform ماډلونو په اړه پوه شئ. دوی په هیڅ ډول هوښیار ندي ، دوی تاسو ته اجازه نه ورکوي چې د یو څه پورې اړوند پیچلي اړیکې رامینځته کړئ. دا ټول د پراختیا کونکو په اوږو راځي. دا دی، دا یوازې د Terraform ترتیب یو ډول دی چې تاسو دمخه لیکلی دی. او تاسو کولی شئ په ساده ډول دا د یوې ډلې په توګه ووایاست.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

نو موږ هڅه کوو چې پوه شو چې څنګه به زموږ د 10-20-30 Kb کوډ اصلاح کړو. موږ په تدریجي ډول پوهیږو چې موږ اړتیا لرو چې ځینې ماډلونه وکاروو.

لومړی ډول ماډلونه چې تاسو ورسره مخ یاست د سرچینې ماډلونه دي. دوی نه پوهیږي چې ستاسو زیربنا څه ده، ستاسو سوداګرۍ څه شی دی، چیرته او شرایط څه دي. دا په حقیقت کې هغه ماډلونه دي چې زه د خلاصې سرچینې ټولنې سره یوځای اداره کوم، او کوم چې موږ ستاسو د زیربنا لپاره د لومړني ودانیو بلاکونو په توګه وړاندې کوو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د سرچینې ماډل یوه بیلګه.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

کله چې موږ د سرچینې ماډل ته زنګ ووهو، موږ مشخص کوو چې له کومې لارې باید د هغې مینځپانګې پورته کړو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

موږ په ګوته کوو چې کوم نسخه موږ ډاونلوډ کول غواړو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

موږ هلته د دلیلونو یوه ډله تیروو. بس نور څه نه. دا ټول هغه څه دي چې موږ باید پوه شو کله چې موږ دا ماډل کاروو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

ډیری خلک فکر کوي چې که دوی وروستۍ نسخه وکاروي، هرڅه به باثباته وي. مګر نه. زیربنا باید نسخه شي؛ موږ باید په روښانه ډول ځواب ووایو چې دا یا هغه برخې کومې نسخې ته ګمارل شوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دلته هغه کوډ دی چې د دې ماډل دننه دی. د امنیت ګروپ ماډل. دلته سکرول 640 کرښې ته ځي. په هر ممکنه ترتیب کې په ایمیزون کې د امنیت - کروپ سرچینې رامینځته کول خورا غیر معمولي کار دی. دا کافي نه ده چې په ساده ډول یوه امنیتي ډله جوړه کړئ او ورته ووایاست چې کوم مقررات دې ته لیږدول کیږي. دا به خورا ساده وي. د ایمیزون دننه یو ملیون مختلف محدودیتونه شتون لري. د مثال په توګه، که تاسو کاروئ د VPC پای ټکی، مخکینۍ لیست، مختلف APIs او هڅه کوي چې دا ټول د هر څه سره یوځای کړي، بیا ټیرفارم تاسو ته اجازه نه ورکوي چې دا کار وکړي. او د ایمیزون API هم دا اجازه نه ورکوي. له همدې امله، موږ اړتیا لرو چې دا ټول ناوړه منطق په ماډل کې پټ کړو او د کارونکي کوډ ورکړئ چې ورته ښکاري.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

کاروونکي اړتیا نلري چې پوه شي چې دا څنګه دننه جوړ شوی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دوهم ډول ماډلونه، چې د سرچینو ماډلونه لري، دمخه ستونزې حل کوي چې ستاسو په سوداګرۍ کې ډیر پلي کیږي. ډیری وختونه دا یو ځای دی چې د Terraform لپاره توسیع دی او د ټګونو لپاره ځینې سخت ارزښتونه ټاکي، د شرکت معیارونو لپاره. تاسو کولی شئ هلته فعالیت هم اضافه کړئ چې Terraform اوس مهال تاسو ته د کارولو اجازه نه ورکوي. دا همدا اوس دی. اوس نسخه 0.11، کوم چې د تیر شی په اړه دی. مګر بیا هم، پری پروسیسرونه، jsonnet، cookiecutter او یو شمیر نور شیان هغه معاون میکانیزم دي چې باید د بشپړ کار لپاره وکارول شي.

بیا به زه د دې ځینې مثالونه وښیم.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د زیربنا ماډل په ورته ډول ویل کیږي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

هغه سرچینه چې له کوم ځای څخه د مینځپانګې ډاونلوډ کول په ګوته شوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د ارزښتونو یوه ډله په دې ماډل کې تیریږي او تیریږي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

بیا، د دې ماډل دننه، د سرچینو ماډلونو یوه ډله د VPC یا د اپلیکیشن بار بار بیلانس جوړولو لپاره، یا د امنیت ګروپ جوړولو یا د لچک لرونکي کانټینر خدماتو کلستر لپاره ویل کیږي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دوه ډوله ماډلونه شتون لري. دا مهمه ده چې پوه شي ځکه چې ډیری هغه معلومات چې ما په دې راپور کې ګروپ کړي دي په اسنادو کې ندي لیکل شوي.

او همدا اوس په Terraform کې اسناد خورا ستونزمن دي ځکه چې دا یوازې وايي چې دا ځانګړتیاوې شتون لري، تاسو یې کارولی شئ. خو هغه دا نه وايي چې دا ځانګړتیاوې څنګه کارول کیږي، ولې د دوی کارول غوره دي. له همدې امله، ډیری خلک یو څه لیکي چې دوی ورسره ژوند نشي کولی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

راځئ چې په راتلونکي کې د دې ماډلونو لیکلو څرنګوالی وګورو. بیا به موږ وګورو چې دوی ته څنګه زنګ ووهئ او څنګه د کوډ سره کار وکړو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د Terraform ثبت - https://registry.terraform.io/

لارښوونه # 0 د سرچینو ماډلونه نه لیکل دي. ډیری دا ماډلونه دمخه ستاسو لپاره لیکل شوي. لکه څنګه چې ما وویل، دوی خلاصې سرچینې دي، دوی ستاسو د سوداګرۍ منطق نه لري، دوی د IP پتې، پاسورډونو او نورو لپاره هارډ کوډ شوي ارزښتونه نلري. ماډل خورا انعطاف وړ دی. او دا ډیر احتمال لا دمخه لیکل شوی. د ایمیزون څخه د سرچینو لپاره ډیری ماډلونه شتون لري. شاوخوا 650. او ډیری یې د ښه کیفیت لرونکي دي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

په دې مثال کې، یو څوک تاسو ته راغی او وویل، "زه غواړم د ډیټابیس اداره کولو توان ولرم. یو ماډل جوړ کړئ ترڅو زه یو ډیټابیس جوړ کړم." سړی د ایمیزون یا ټیرفارم پلي کولو توضیحاتو نه پوهیږي. هغه په ​​ساده ډول وايي: "زه غواړم MSSQL اداره کړم." دا ، زموږ معنی دا ده چې دا به زموږ ماډل ته زنګ ووهي ، د انجن ډول هلته تیر کړي ، او د وخت زون په ګوته کړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او یو سړی باید پوه نشي چې موږ به په دې ماډل کې دوه مختلف سرچینې رامینځته کړو: یو د MSSQL لپاره، دوهم د هر څه لپاره، یوازې دا چې په Terraform 0.11 کې تاسو د وخت زون ارزښتونه د اختیاري په توګه نه شئ مشخص کولی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او د دې ماډل څخه د وتلو په وخت کې، یو سړی به وکوالی شي په ساده ډول یو پته ترلاسه کړي. هغه به نه پوهیږي چې له کوم ډیټابیس څخه ، له کومې سرچینې څخه موږ دا ټول په داخلي توګه رامینځته کوو. دا د پټولو خورا مهم عنصر دی. او دا نه یوازې په هغه ماډلونو باندې پلي کیږي چې په خلاصې سرچینې کې عامه دي ، بلکه هغه ماډلونو ته هم پلي کیږي چې تاسو به یې په خپلو پروژو او ټیمونو کې ولیکئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دا دوهم دلیل دی، کوم چې خورا مهم دی که تاسو د یو څه مودې لپاره Terraform کاروئ. تاسو یو ذخیره لرئ چیرې چې تاسو د خپل شرکت لپاره خپل ټول ټیرفارم ماډلونه ځای په ځای کوئ. او دا خورا عادي خبره ده چې د وخت په تیریدو سره به دا پروژه د یو یا دوه میګابایټ اندازې ته وده ورکړي. دا ښه ده.

مګر ستونزه دا ده چې Terraform دا ماډلونه څنګه بولي. د مثال په توګه، که تاسو د هر انفرادي کاروونکي د جوړولو لپاره ماډل ته زنګ ووهئ، Terraform به لومړی ټول ذخیره پورته کړي او بیا به هغه فولډر ته لاړ شي چیرې چې دا ځانګړی ماډل موقعیت لري. پدې توګه تاسو به هر ځل یو میګابایټ ډاونلوډ کړئ. که تاسو 100 یا 200 کاروونکي اداره کړئ، نو تاسو به 100 یا 200 میګابایټ ډاونلوډ کړئ، او بیا هغه فولډر ته لاړ شئ. نو په طبیعي توګه تاسو نه غواړئ هرکله چې تاسو د "Terraform init" ټک وکړئ د توکو یوه ډله ډاونلوډ کړئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

https://github.com/mbtproject/mbt

د دې ستونزې دوه حلونه شتون لري. لومړی د اړونده لارو کارول دي. پدې توګه تاسو په کوډ کې په ګوته کوئ چې فولډر ځایی دی (./). او مخکې لدې چې تاسو کوم شی پیل کړئ ، تاسو په ځایی توګه د دې ذخیره کولو ګیټ کلون وکړئ. په دې توګه تاسو دا یو ځل ترسره کوئ.

البته، ډیری نیمګړتیاوې شتون لري. د مثال په توګه، تاسو نشئ کولی نسخه وکاروئ. او دا ځینې وختونه د ژوند کولو لپاره ستونزمن وي.

دوهم حل. که تاسو ډیری فرعي ماډلونه لرئ او تاسو دمخه یو ډول تاسیس شوی پایپ لاین لرئ ، نو د MBT پروژه شتون لري ، کوم چې تاسو ته اجازه درکوي ډیری مختلف کڅوړې د مونورپوزیټري څخه راټول کړئ او S3 ته یې اپلوډ کړئ. دا ډیره ښه لاره ده. په دې توګه، د iam-user-1.0.0.zip فایل به یوازې 1 Kb وزن ولري، ځکه چې د دې سرچینې د جوړولو کوډ خورا کوچنی دی. او دا به ډیر چټک کار وکړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

راځئ چې د هغه څه په اړه وغږیږو چې په ماډلونو کې نشي کارول کیدی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

ولې په ماډلونو کې دا بد دی؟ تر ټولو بد شی د کاروونکي فرض کول دي. فرض کړئ کارن د چمتو کونکي تصدیق کولو اختیار دی چې د مختلف خلکو لخوا کارول کیدی شي. د مثال په توګه، موږ به ټول رول جذب کړو. دا پدې مانا ده چې Terraform به دا رول په غاړه واخلي. او بیا به له دې رول سره نورې کړنې ترسره کوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او بد دا دی چې که واسیا خوښوي چې له ایمیزون سره په یو ډول وصل شي ، د مثال په توګه ، د ډیفالټ چاپیریال متغیر کارول ، او پیټیا خوښوي چې خپل شریک کیلي وکاروي ، کوم چې هغه په ​​​​پټ ځای کې لري ، نو تاسو نشئ کولی دواړه په کې مشخص کړئ. Terraform. او د دې لپاره چې دوی د رنځ تجربه ونه کړي، په ماډل کې د دې بلاک په نښه کولو ته اړتیا نشته. دا باید په لوړه کچه په ګوته شي. دا دی، موږ د سرچینو ماډل لرو، د زیربنا ماډل او په سر کې یو جوړښت. او دا باید په لوړ ځای کې اشاره وشي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دوهم بد رزق روزونکی دی. دلته بدي دومره کوچنۍ نه ده، ځکه که تاسو کوډ ولیکئ او دا ستاسو لپاره کار کوي، نو تاسو فکر کوئ چې که دا کار کوي، نو ولې یې بدل کړئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

بد دا دی چې تاسو تل کنټرول نلرئ کله چې دا چمتو کونکی به پیل شي ، لومړی. او دوهم ، تاسو کنټرول نلرئ د aws ec2 معنی څه ده ، د بیلګې په توګه موږ اوس د لینکس یا وینډوز په اړه خبرې کوو. نو تاسو نشئ کولی هغه څه ولیکئ چې په مختلف عملیاتي سیسټمونو یا د مختلف کاروونکو قضیو لپاره ورته کار وکړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

تر ټولو عام مثال، چې په رسمي اسنادو کې هم ورته اشاره شوې، دا ده چې که تاسو aws_instance ولیکئ او د دلیلونو یوه ډله مشخص کړئ، نو پدې کې هیڅ غلط نشته که تاسو هلته چمتو کوونکی "لوکل - اجرایوي" مشخص کړئ او خپل ځواب ورکوونکي چل کړئ- د لوبو کتاب

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

په حقیقت کې، هو، په دې کې هیڅ شی نشته. مګر په حقیقت کې ډیر ژر به تاسو پوه شئ چې دا محلي - اجرایی شی شتون نلري، د بیلګې په توګه، په لانچ_ ترتیب کې.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او کله چې تاسو لانچ_کنفیګریشن وکاروئ ، او تاسو غواړئ د یو مثال څخه د آټوسکیلینګ ګروپ رامینځته کړئ ، نو په لانچ_کنفیګریشن کې د "مجاز کونکي" مفهوم شتون نلري. د "کارونکي ډیټا" مفهوم شتون لري.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

له همدې امله، یو ډیر نړیوال حل د کاروونکي ډاټا کارول دي. او دا به یا پخپله په مثال کې پیل شي ، کله چې مثال فعال شي ، یا د ورته کارونکي ډیټا کې ، کله چې د اتوماتیک کولو ګروپ دا لانچ_ تشکیل کاروي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

که تاسو لاهم غواړئ روزونکي چل کړئ ، ځکه چې دا د ګلونګ برخه ده ، کله چې یوه سرچینه رامینځته کیږي ، پدې وخت کې تاسو اړتیا لرئ خپل چمتو کونکی ، ستاسو کمانډ چل کړئ. داسې حالات ډېر دي.

او د دې لپاره ترټولو سمه سرچینه د null_resource په نوم یادیږي. Null_resource یوه ډمي سرچینه ده چې هیڅکله واقعیا نه رامینځته کیږي. دا هیڅ شی نه لمس کوي ، نه API ، نه اتوماتیک. مګر دا تاسو ته اجازه درکوي کنټرول کړئ کله چې قومانده پرمخ وړئ. په دې حالت کې، قوماندې د جوړولو په وخت کې پرمخ ځي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

مخونه http://bit.ly/common-traits-in-terraform-modules

ډیری نښې شتون لري. زه به په تفصیل سره ټولو نښو ته لاړ نه شم. په دې اړه یوه مقاله شتون لري. مګر که تاسو د Terraform سره کار کړی وي یا د نورو خلکو ماډلونه کارولي وي ، نو تاسو ډیری وختونه لیدلي وي چې ډیری ماډلونه لکه د خلاصې سرچینې ډیری کوډونه د خلکو لخوا د دوی د اړتیاو لپاره لیکل شوي. یو سړي دا ولیکه او خپله ستونزه یې حل کړه. ما دا په GitHub کې ودرول، اجازه راکړئ چې ژوند وکړي. دا به ژوندی وي، مګر که چیرې اسناد او مثالونه شتون نلري، نو هیڅوک به یې ونه کاروي. او که چیرې هیڅ فعالیت شتون ونلري چې تاسو ته اجازه درکوي د دې ځانګړي دندې څخه لږ څه حل کړئ ، نو هیڅوک به یې هم ونه کاروي. د کاروونکو له لاسه ورکولو لپاره ډیری لارې شتون لري.

که تاسو غواړئ یو څه ولیکئ ترڅو خلک یې وکاروي، نو زه وړاندیز کوم چې دا نښې تعقیب کړئ.

دا دي:

  • اسناد او مثالونه.
  • بشپړ فعالیت.
  • په معقول ډول.
  • پاک کوډ.
  • ټیسټونه.

ازموینې یو بل حالت دی ځکه چې لیکل یې خورا ستونزمن دي. زه په اسنادو او مثالونو ډیر باور لرم.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

نو، موږ د ماډلونو لیکلو څرنګوالی وګورو. دوه دلیلونه شتون لري. لومړی، کوم چې خورا مهم دی، دا مه لیکئ که تاسو کولی شئ، ځکه چې یو ډله خلکو دا کارونه ستاسو څخه مخکې ترسره کړي دي. او دوهم، که تاسو لاهم پریکړه وکړئ، نو بیا هڅه وکړئ چې په ماډلونو او چمتو کونکو کې چمتو کونکي ونه کاروئ.

دا د اسنادو خړ برخه ده. تاسو شاید اوس فکر کوئ: "یو څه ناڅرګند دی. قانع نه شو." مګر موږ به په شپږو میاشتو کې وګورو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

اوس راځئ چې د دې ماډلونو د ویلو څرنګوالي په اړه وغږیږو.

موږ پوهیږو چې زموږ کوډ د وخت په تیریدو سره وده کوي. موږ نور یو فایل نه لرو، موږ دمخه 20 فایلونه لرو. دوی ټول په یوه فولډر کې دي. یا شاید په پنځو فولډرو کې. شاید موږ په یو ډول پیل کوو چې دوی د سیمې له مخې د ځینو برخو له مخې مات کړو. بیا موږ پوهیږو چې اوس موږ د ترکیب او آرکیسټریشن ځینې اصول لرو. دا دی، موږ باید پوه شو چې موږ باید څه وکړو که موږ د شبکې سرچینې بدلې کړو، موږ باید د خپلو پاتې سرچینو سره څه وکړو، څنګه د دې انحصارونو لامل شو، او نور.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دوه افراطونه شتون لري. لومړی افراط ټول په یو کې دی. موږ یو ماسټر فایل لرو. د اوس وخت لپاره، دا د Terraform ویب پاڼې رسمي غوره عمل و.

مګر اوس دا د تخریب او حذف په توګه لیکل کیږي. د وخت په تیریدو سره، د Terraform ټولنې پوه شو چې دا د غوره عمل څخه لیرې و، ځکه چې خلکو د پروژې په مختلفو لارو کار پیل کړ. او ستونزې شته. د مثال په توګه، کله چې موږ ټول انحصارونه په یو ځای کې لیست کړو. داسې شرایط شتون لري کله چې موږ د "Terraform پلان" کلیک کوو او تر هغه چې ټریفارم د ټولو سرچینو حالتونه تازه کړي، ډیر وخت تیریږي.

ډیری وخت دی، د بیلګې په توګه، 5 دقیقې. د ځینو لپاره دا ډیر وخت دی. ما داسې قضیې لیدلي چې 15 دقیقې وخت نیسي. AWS API 15 دقیقې مصرف کړې ترڅو معلومه کړي چې د هرې سرچینې حالت سره څه پیښیږي. دا ډیره لویه سیمه ده.

او، په طبیعي توګه، یوه اړونده ستونزه به راڅرګند شي کله چې تاسو غواړئ په یو ځای کې یو څه بدل کړئ، بیا تاسو 15 دقیقې انتظار وکړئ، او دا تاسو ته د ځینو بدلونونو کینوس درکوي. تاسو ووهل، "هو" یې ولیکل، او یو څه غلط شو. دا یو ډیر ریښتینی مثال دی. Terraform هڅه نه کوي چې تاسو له ستونزو څخه وژغوري. یعنی هغه څه ولیکئ چې تاسو یې غواړئ. ستونزې به وي - ستاسو ستونزې. پداسې حال کې چې Terraform 0.11 هڅه نه کوي چې تاسو سره په هیڅ ډول مرسته وکړي. په 0.12 کې ځینې په زړه پوري ځایونه شتون لري چې تاسو ته اجازه درکوي چې ووایاست: "واسیا ، تاسو واقعیا دا غواړئ ، ایا تاسو خپل هوش ته رسیدلی شئ؟"

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دویمه لاره دا ده چې دا ساحه کمه کړي، یعني د یو ځای څخه تلیفونونه د بل ځای څخه لږ وصل کیدی شي.

یوازینۍ ستونزه دا ده چې تاسو اړتیا لرئ نور کوډ ولیکئ، د بیلګې په توګه تاسو اړتیا لرئ چې په ډیرو فایلونو کې متغیرونه تشریح کړئ او دا تازه کړئ. ځینې ​​خلک دا نه خوښوي. دا زما لپاره عادي خبره ده. او ځینې خلک فکر کوي: "ولې دا په مختلفو ځایونو کې لیکم، زه به دا ټول په یو ځای کې واچوم." دا ممکنه ده، مګر دا دویمه انتها ده.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

څوک دا ټول په یو ځای کې ژوند کوي؟ یو، دوه، درې کسان، یعني یو څوک یې کاروي.

او څوک یو ځانګړی جز، یو بلاک یا یو زیربنا ماډل بولي؟ له پنځو څخه تر اوو تنو پورې. دا ښه دی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

تر ټولو عام ځواب په منځ کې دی. که پروژه لویه وي، نو تاسو به ډیری وختونه داسې وضعیت ولرئ چیرې چې هیڅ حل مناسب نه وي او نه هرڅه هلته کار کوي، نو تاسو د مخلوط سره پای ته ورسیږئ. پدې کې هیڅ غلط نشته، تر هغه چې تاسو پوهیږئ چې دواړه ګټې لري.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

که چیرې په سټیک VPC کې یو څه بدل شوی وي او تاسو غواړئ دا بدلونونه په EC2 کې پلي کړئ ، د بیلګې په توګه تاسو غواړئ د آټوسکلینګ ګروپ تازه کړئ ځکه چې تاسو نوی فرعي نیټ درلود ، نو زه دا ډول انحصاري آرکیسټریشن بولم. ځینې ​​حلونه شتون لري: څوک څه کاروي؟

زه کولی شم وړاندیز وکړم چې کوم حلونه شتون لري. تاسو کولی شئ د جادو کولو لپاره Terraform وکاروئ ، یا تاسو د Terraform کارولو لپاره میک فایلونه وکاروئ. او وګورئ چې دلته یو څه بدل شوی، تاسو کولی شئ دلته یې پیل کړئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

تاسو دا پریکړه څنګه خوښوی؟ ایا څوک باور لري چې دا یو ښه حل دی؟ زه موسکا ګورم، په ښکاره ډول شکونه را منځ ته شوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

البته، دا په کور کې هڅه مه کوئ. Terraform هیڅکله د Terraform څخه د چلولو لپاره ډیزاین شوی نه و.

په یوه راپور کې دوی ماته وویل: "نه، دا به کار ونکړي." خبره دا ده چې دا باید کار ونکړي. که څه هم دا خورا اغیزمن ښکاري کله چې تاسو کولی شئ له Terraform څخه Terraform پیل کړئ، او بیا Terraform، تاسو باید دا کار ونه کړئ. Terraform باید تل په اسانۍ سره پیل شي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

https://github.com/gruntwork-io/terragrunt/

که تاسو د زنګ آرکسټریشن ته اړتیا لرئ کله چې یو څه په یو ځای کې بدل شوی وي، نو هلته Terragrunt شتون لري.

Terragrunt یو افادیت دی، په Terraform کې اضافه کول، چې تاسو ته اجازه درکوي د زیربنا ماډلونو ته زنګونه همغږي او تنظیم کړئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د ټیرافارم ترتیب کولو عادي فایل داسې ښکاري.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

تاسو مشخص کړئ کوم ځانګړی ماډل چې تاسو غواړئ زنګ ووهئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

ماډل کوم انحصار لري؟

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او دا ماډل کوم دلیلونه مني. دا ټول د Terragrunt په اړه پوهیدل دي.

اسناد شتون لري، او په GitHub کې 1 ستوري شتون لري. مګر په ډیری قضیو کې دا هغه څه دي چې تاسو ورته اړتیا لرئ پوه شئ. او دا په شرکتونو کې پلي کول خورا اسانه دي چې یوازې د Terraform سره کار پیل کوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

نو آرکیسټریشن Terragrunt دی. نور اختیارونه شتون لري.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

اوس راځئ چې د کوډ سره د کار کولو څرنګوالي په اړه وغږیږو.

که تاسو اړتیا لرئ خپل کوډ ته نوي ځانګړتیاوې اضافه کړئ، په ډیری مواردو کې دا اسانه ده. تاسو یوه نوې سرچینه لیکئ، هرڅه ساده دي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

که تاسو ځینې سرچینې لرئ چې تاسو دمخه رامینځته کړې ، د مثال په توګه ، تاسو د AWS حساب خلاصولو وروسته د Terraform په اړه زده کړل او غواړئ هغه سرچینې وکاروئ چې تاسو دمخه لرئ ، نو دا به مناسبه وي چې خپل ماډل په دې ډول وغزوئ ، ترڅو دا د موجوده سرچینو کارولو ملاتړ کوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او د بلاک سرچینې په کارولو سره د نویو سرچینو رامینځته کولو ملاتړ وکړ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

په محصول کې موږ تل د محصول ID بیرته راګرځو پدې پورې اړه لري چې څه کارول شوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

په Terraform 0.11 کې دوهم خورا مهم ستونزه د لیستونو سره کار کوي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

مشکل دا دی چې که موږ د کاروونکو داسې لیست لرو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او کله چې موږ دا کاروونکي د بلاک سرچینو په کارولو سره رامینځته کوو ، نو هرڅه سم کیږي. موږ ټول لیست ته ځو، د هر یو لپاره فایل جوړوو. هر څه سم دي. او بیا، د مثال په توګه، یوزر 3، چې په مینځ کې دی، باید له دې ځایه لیرې شي، بیا ټول هغه سرچینې چې د هغه څخه وروسته رامینځته شوي بیا جوړ شي ځکه چې شاخص به بدل شي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

په دولتي چاپیریال کې د لیستونو سره کار کول. دولتي چاپیریال څه شی دی؟ دا هغه حالت دی چیرې چې دا سرچینه رامینځته کیږي نو نوی ارزښت رامینځته کیږي. د مثال په توګه، د AWS لاسرسي کیلي یا د AWS پټ کیلي، د بیلګې په توګه کله چې موږ یو کارن جوړوو، موږ یو نوی لاسرسی یا پټ کیلي ترلاسه کوو. او هرکله چې موږ یو کارن حذف کړو، دا کارن به یو نوی کیلي ولري. مګر دا فینګشوی ندی، ځکه چې کاروونکي به نه غواړي چې زموږ سره ملګري شي که چیرې موږ د هغه لپاره یو نوی کارن جوړ کړو هرکله چې څوک ټیم پریږدي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دا د حل لاره ده. دا په Jsonnet کې لیکل شوی کوډ دی. Jsonnet د ګوګل څخه د نمونې کولو ژبه ده.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دا کمانډ تاسو ته اجازه درکوي چې دا ټیمپلیټ ومني او د محصول په توګه دا د json فایل بیرته راولي چې ستاسو د ټیمپلیټ سره سم جوړ شوی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

ټیمپلیټ داسې ښکاري.

Terraform تاسو ته اجازه درکوي چې د HCL او Json دواړو سره په ورته ډول کار وکړئ، نو که تاسو د Json پیدا کولو وړتیا لرئ، نو تاسو کولی شئ دا په Terraform کې وغورځوئ. د .tf.json توسیع سره فایل به په بریالیتوب سره ډاونلوډ شي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او بیا موږ د معمول په توګه د هغې سره کار کوو: د ټیرافارم پیل، ټرامورم تطبیق. او موږ دوه کاروونکي جوړوو.

اوس موږ نه ډاریږو که څوک ټیم پریږدي. موږ به یوازې د json فایل ترمیم کړو. واسیا پپکین پاتې شو، پیټیا پیاتوچکین پاتې شو. Petya Pyatochkin به نوې کیلي ترلاسه نکړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د نورو وسیلو سره د Terraform ادغام واقعیا د Terraform دنده نه ده. Terraform د سرچینو رامینځته کولو لپاره د پلیټ فارم په توګه رامینځته شوی او بس. او هرڅه چې وروسته راپورته کیږي د ټیرفارم اندیښنه نده. او هلته د دې اوبدلو ته اړتیا نشته. ځواب ورکوونکی شتون لري، کوم چې هرڅه چې تاسو ورته اړتیا لرئ ترسره کوي.

مګر شرایط رامینځته کیږي کله چې موږ غواړو د ټیرفارم وغځوو او د یو څه بشپړیدو وروسته ځینې قوماندې ته زنګ ووهو.

لومړی لاره. موږ یو محصول رامینځته کوو چیرې چې موږ دا کمانډ لیکو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

او بیا موږ دا کمانډ د شیل ټرافارم محصول څخه وایو او هغه ارزښت مشخص کوو چې موږ یې غواړو. په دې توګه، کمانډ د ټولو بدلیدونکو ارزښتونو سره اجرا کیږي. دا ډیر آرام دی.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دویمه لاره. دا زموږ په زیربنا کې د بدلونونو پورې اړه لري د null_resource کارول دي. موږ کولی شو د ځینې سرچینو د بدلون ID سره سم ورته محلي exe غږ وکړو.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

په طبیعي ډول ، دا ټول په کاغذ کې اسانه دي ، ځکه چې ایمیزون ، لکه د نورو ټولو عامه چمتو کونکو په څیر ، د خپل څنډې قضیې یوه ډله لري.

ترټولو عام قضیه دا ده چې کله تاسو د AWS حساب خلاص کړئ، دا مهمه ده چې تاسو کومې سیمې کاروئ؛ ایا دا خصوصیت هلته فعال شوی دی؛ شاید تاسو دا د دسمبر 2013 وروسته پرانیزئ؛ شاید تاسو په VPC وغيره کې ډیفالټ کاروئ. ډیری محدودیتونه شتون لري. او ایمیزون دوی د اسنادو په اوږدو کې خپاره کړل.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

دلته یو څو شیان شتون لري چې زه یې د مخنیوي وړاندیز کوم.

د پیل کولو لپاره، د Terraform پلان یا Terraform CLI دننه د ټولو غیر پټو دلیلونو څخه ډډه وکړئ. دا ټول یا د tfvars فایل یا د چاپیریال متغیر کې کیښودل کیدی شي.

مګر تاسو اړتیا نلرئ دا ټول جادو حکم په یاد ولرئ. د Terraform پلان - var او موږ ځو. لومړی متغیر var دی، دوهم متغیر var دی، دریم، څلورم. د کوډ په توګه د زیربنا ترټولو مهم اصل چې زه ډیری وختونه کاروم دا دی چې یوازې د کوډ په کتلو سره، زه باید روښانه پوهه ولرم چې هلته څه ځای پرځای شوي، په کوم حالت کې او د کوم ارزښتونو سره. او له همدې امله زه اړتیا نلرم چې اسناد ولولم یا له واسیا څخه وپوښتم چې هغه زموږ د کلستر جوړولو لپاره کوم پیرامیټونه کارولي. زه یوازې د tfvars توسیع سره فایل خلاصولو ته اړتیا لرم، کوم چې ډیری وختونه د چاپیریال سره سمون لري، او هلته هرڅه وګورئ.

همدارنګه، د ساحې کمولو لپاره د هدف دلیلونه مه کاروئ. د دې لپاره دا د کوچني زیربنا ماډلونو کارول خورا اسانه دي.

همدارنګه، د موازي محدودیت او زیاتوالي ته اړتیا نشته. که زه 150 سرچینې لرم او زه غواړم د ایمیزون موازي له ډیفالټ 10 څخه 100 ته لوړ کړم، نو ډیری احتمال به یو څه غلط شي. یا دا ممکن اوس ښه وي، مګر کله چې ایمیزون وايي چې تاسو ډیری تلیفونونه کوئ، تاسو به په ستونزه کې یاست.

Terraform به هڅه وکړي چې ډیری دا ستونزې بیا پیل کړي، مګر تاسو به نږدې هیڅ شی ترلاسه نه کړئ. موازي = 1 د کارولو لپاره یو مهم شی دی که تاسو د AWS API دننه یا د Terraform چمتو کونکي دننه ځینې بګ ته مخه کړئ. او بیا تاسو اړتیا لرئ مشخص کړئ: موازي = 1 او تر هغه پورې انتظار وکړئ تر څو چې ټیرفارم یو کال پای ته ورسوي ، بیا دوهم ، بیا دریم. هغه به دوی یو یو په لاره واچوي.

خلک اکثرا زما څخه پوښتنه کوي، "ولې زه فکر کوم چې د Terraform کاري ځایونه بد دي؟" زه باور لرم چې د زیربنا اصول د کوډ په توګه دا دي چې وګورئ کوم زیربنا رامینځته شوې او د کوم ارزښتونو سره.

کاري ځایونه د کاروونکو لخوا ندي رامینځته شوي. دا پدې معنی ندي چې کاروونکو د GitHub مسلو کې لیکلي چې موږ نشو کولی د Terraform کاري ځایونو پرته ژوند وکړو. نه داسې نه ده. Terraform Enterprise یو سوداګریز حل دی. د HashiCorp څخه Terraform پریکړه وکړه چې موږ کاري ځایونو ته اړتیا لرو، نو موږ یې فایل کړی. زه دا خورا اسانه وموم چې دا په جلا فولډر کې واچوم. بیا به یو څه نور فایلونه وي، مګر دا به روښانه وي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د کوډ سره څنګه کار کول؟ په حقیقت کې، د لیستونو سره کار کول یوازینی درد دی. او Terraform په اسانۍ سره واخلئ. دا هغه څه ندي چې ستاسو لپاره به هرڅه عالي کړي. دلته اړتیا نشته چې هر څه چې په اسنادو کې لیکل شوي وي وغورځوئ.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د راپور موضوع "د راتلونکي لپاره" لیکل شوې وه. زه به په دې اړه په لنډه توګه خبرې وکړم. د راتلونکي لپاره، دا پدې مانا ده چې 0.12 به ژر خوشې شي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

0.12 یو ټن نوي توکي دي. که تاسو د منظم برنامه کولو څخه راشئ ، نو تاسو هر ډول متحرک بلاکونه ، لوپونه ، سم او مشروط پرتله کولو عملیات له لاسه ورکوئ ، چیرې چې کیڼ او ښیې اړخونه په ورته وخت کې نه محاسبه کیږي ، مګر د وضعیت پورې اړه لري. تاسو دا ډیر له لاسه ورکوئ، نو 0.12 به دا ستاسو لپاره حل کړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

خو! که تاسو لږ او ډیر په ساده ډول ولیکئ ، د چمتو شوي ماډلونو او دریمې ډلې حلونو په کارولو سره ، نو تاسو اړتیا نلرئ انتظار وکړئ او امید ولرئ چې 0.12 به راشي او ستاسو لپاره هرڅه سم کړي.

د راتلونکي لپاره په Terraform کې د زیربناوو توضیحات. انتون بابینکو (۲۰۱۸)

د راپور لپاره مننه! تاسو د کوډ په توګه د زیربنا په اړه خبرې وکړې او په لفظي ډول د ازموینو په اړه یوه کلمه وویل. ایا په ماډلونو کې ازموینې ته اړتیا ده؟ دا د چا مسؤلیت دی؟ ایا زه اړتیا لرم چې دا پخپله ولیکم یا دا د ماډلونو مسؤلیت دی؟

راتلونکی کال به د راپورونو څخه ډک وي چې موږ پریکړه کړې چې هر څه و ازموئ. څه شی ازموینه کول ترټولو لویه پوښتنه ده. دلته ډیری انحصارونه شتون لري ، د مختلف چمتو کونکو څخه ډیری محدودیتونه. کله چې تاسو او زه خبرې کوو او تاسو وایاست: "زه ازموینې ته اړتیا لرم،" بیا زه پوښتنه کوم: "تاسو څه ازموینه کوئ؟" تاسو ووایاست چې تاسو به په خپله سیمه کې ازموینه وکړئ. بیا زه وایم چې دا زما په سیمه کې کار نه کوي. دا دی، موږ به حتی په دې اړه موافقه ونه کړو. د یادولو وړ نه ده چې ډیری تخنیکي ستونزې شتون لري. دا چې دا ازموینې څنګه لیکل کیږي ترڅو دوی کافي وي.

زه په فعاله توګه د دې موضوع څیړنه کوم، د بیلګې په توګه څنګه په اتوماتيک ډول د زیربنا پراساس ازموینې رامینځته کړئ چې تاسو یې لیکلي. دا دی ، که تاسو دا کوډ لیکلی وي ، نو زه اړتیا لرم چې دا چل کړم ، د دې پراساس زه کولی شم ازموینې رامینځته کړم.

Terratest یو له خورا مکرر ذکر شوي کتابتونونو څخه دی چې تاسو ته اجازه درکوي د Terraform لپاره د ادغام ازموینې ولیکئ. دا یو له اسانتیاوو څخه دی. زه د DSL ډول غوره کوم، د بیلګې په توګه، rspec.

انتون، د راپور لپاره مننه! زما نوم ویلیری دی. اجازه راکړئ یوه کوچنۍ فلسفي پوښتنه وکړم. په مشروط ډول، چمتو کول، ځای پرځای کول شتون لري. چمتو کول زما زیربنا رامینځته کوي ، په ګمارلو کې موږ دا د ګټورو شیانو سره ډک کوو ، د مثال په توګه ، سرورونه ، غوښتنلیکونه او نور. او دا زما په ذهن کې ده چې Terraform د چمتو کولو لپاره ډیر دی ، او ځواب ورکوونکی د ځای په ځای کولو لپاره ډیر دی ، ځکه چې ځواب ورکوونکی د فزیکي زیربنا لپاره هم دی. تاسو ته اجازه درکوي چې nginx، Postgres نصب کړئ. مګر په ورته وخت کې، ځواب ورکوونکي داسې ښکاري چې چمتو کولو ته اجازه ورکوي، د بیلګې په توګه، د ایمیزون یا ګوګل سرچینې. مګر Terraform تاسو ته اجازه درکوي د دې ماډلونو په کارولو سره ځینې سافټویر ځای په ځای کړئ. ستاسو له نظره، ایا یو ډول پوله شتون لري چې د Terraform او Ansible ترمنځ تیریږي، چیرته او څه کارول غوره دي؟ یا، د مثال په توګه، ایا تاسو فکر کوئ چې ځواب ورکونکی لا دمخه کثافات دی، تاسو باید د هرڅه لپاره د Terraform کارولو هڅه وکړئ؟

ښه پوښتنه، والیري. زه باور لرم چې د 2014 راهیسې د Terraform د موخې په شرایطو کې بدلون نه دی راغلی. دا د زیربنا لپاره رامینځته شوی او د زیربنا لپاره مړ شوی. موږ لاهم د تنظیم کولو مدیریت ته اړتیا درلوده او ځواب به یې ولرو. ننګونه دا ده چې د launch_configuration دننه د کارونکي ډیټا شتون لري. او هلته تاسو ځواب ورکوئ، او داسې نور. دا هغه معیاري توپیر دی چې زه یې خوښوم.

که موږ د ښکلي زیربنا په اړه وغږیږو ، نو د پیکر په څیر اسانتیاوې شتون لري چې دا عکس راټولوي. او بیا Terraform د دې عکس موندلو لپاره د معلوماتو سرچینه کاروي او د دې لانچ_ تشکیل تازه کوي. دا په دې ډول پایپ لاین دی چې موږ لومړی ټریکر راوباسئ ، بیا ټریفارم راوباسئ. او که جوړ شي، نو یو نوی بدلون واقع کیږي.

سلام! د راپور لپاره مننه! زما نوم میشا دی، د RBS شرکت. تاسو کولی شئ د چمتو کونکي له لارې ځواب ورکوونکي ته زنګ ووهئ کله چې سرچینې رامینځته کړئ. Ansible هم یوه موضوع لري چې د متحرک لیست په نوم یادیږي. او تاسو کولی شئ لومړی ټریفارم ته زنګ ووهئ ، او بیا ځواب ورکونکي ته زنګ ووهئ ، کوم چې به له دولت څخه سرچینې واخلي او اجرا یې کړي. څه ښه دی؟

خلک دواړه د مساوي بریالیتوب سره کاروي. ماته داسې بریښي چې په ځواب کې متحرک موجودیت یو مناسب شی دی ، که موږ د اتوماتیک کولو ګروپ په اړه خبرې نه کوو. ځکه چې په اتوماتیک ګروپ کې موږ لا دمخه زموږ خپل وسیله کټ لرو، کوم چې د launch_configuration په نوم یادیږي. په لانچ_کنفیګریشن کې موږ هر هغه څه ثبت کوو چې پیل کولو ته اړتیا لري کله چې موږ نوې سرچینه جوړه کړو. له همدې امله، د ایمیزون سره، د متحرک لیست کارول او د Terraform ts فایل لوستل، زما په نظر، ډیر زیات دی. او که تاسو نور وسیلې وکاروئ چیرې چې د "آټوسکلینګ ګروپ" مفهوم شتون نلري ، د مثال په توګه ، تاسو ډیجیټل اوشین یا کوم بل چمتو کونکی کاروئ چیرې چې د اتوماتیک کولو ګروپ شتون نلري ، نو هلته به تاسو په لاسي ډول API راوباسئ ، IP پتې ومومئ ، رامینځته کړئ د متحرک لیست فایل، او ځواب ورکوونکي به دمخه د هغې له لارې تیریږي. دا دی ، د ایمیزون لپاره لانچ_ تشکیل شتون لري ، او د هرڅه لپاره متحرک لیست شتون لري.

سرچینه: www.habr.com

Add a comment