Ẹyọ 3 / 11

Ṣiṣakoso Awọn amayederun bi koodu: Imọye Oríkĕ pẹlu Terraform ati IaC

Awọn anfani:

  • Agbara lati loye ero IaC ati ọna iṣẹ Terraform (init, ero, waye, ipinlẹ, module) ati ni oye atọwọda gbejade awọn iyaworan HCL ailewu.
  • Agbara lati ṣayẹwo iyipada kọọkan pẹlu ero ṣaaju lilo ati mu airotẹlẹ run / rọpo awọn ila
  • Agbara lati lo awọn ipilẹ ti fifipamọ awọn aṣiri kuro ninu koodu, titọju ipo ni aabo, ati idinku awọn igbanilaaye IAM

Ni igba atijọ, iṣeto olupin jẹ ọrọ ti titẹ nipasẹ awọsanma awọsanma: ṣẹda ẹrọ foju kan, ṣeto nẹtiwọki, ṣafikun ofin aabo. Ọna yii jẹ o lọra, aṣiṣe-prone, ati aitunṣe - ko ṣee ṣe lati ṣeto agbegbe kanna ni akoko keji. Loni, awọn amayederun ti wa ni iṣakoso bi koodu. IaC (Amayederun bi koodu) jẹ ọna lati ṣapejuwe awọn orisun awọsanma gẹgẹbi awọn olupin, awọn nẹtiwọọki, ati awọn apoti isura infomesonu ninu awọn faili ọrọ kuku ju pẹlu ọwọ. Awọn faili wọnyi joko ni iṣakoso ẹya (Git); O le rii ẹniti o yipada kini, nigbawo, ati kini; O le ṣeto awọn amayederun kanna ni ọpọlọpọ igba, ni ọna kanna, pẹlu aṣẹ kan.

Ohun elo IaC ti o wọpọ julọ jẹ Terraform. Terraform gba awọn itumọ ti o kọ ni ede kika ti a pe ni HCL (Ede Iṣeto HashiCorp — ede iṣeto Terraform), tumọ wọn si API olupese awọsanma (AWS, Azure, GCP) ati ṣẹda awọn orisun. AI mọ HCL daradara ati pe o ṣe agbejade awọn bulọọki eka ni iyara. Ṣugbọn ni IaC, idiyele ti aṣiṣe kan ga: asọye aṣiṣe kan le parẹ gbogbo data iṣelọpọ kan. Ti o ni idi ti ofin goolu ni Terraform ni lati rii gbogbo iyipada pẹlu 'eto' ṣaaju ṣiṣe rẹ.

Terraform ká asiko isise

Terraform n ṣiṣẹ pẹlu awọn aṣẹ ipilẹ mẹta - mimọ iwọnyi jẹ pataki ṣaaju fun ṣiṣakoso iṣelọpọ AI:

  • `terraform init`: Bẹrẹ iṣẹ akanṣe, ṣe igbasilẹ awọn afikun olupese pataki.
  • `ètò terraform`: Ṣe afiwe ipo ti o wa lọwọlọwọ pẹlu ipo ti o fẹ ati ṣafihan kini lati ṣafikun, kini lati yipada, kini lati paarẹ. Ko ṣe ohunkohun. O jẹ igbesẹ aabo to ṣe pataki julọ.
  • `terraform apply`: Lootọ lo Eto naa, ṣiṣẹda/atunṣe awọn orisun.

Ni afikun, awọn ero meji jẹ pataki. Ipinle (faili ipinlẹ): Eyi ni faili nibiti Terraform ṣe tọju ipo lọwọlọwọ ti awọn orisun ti o ṣakoso; Wọ́n máa ń tọ́jú rẹ̀ síbi tó jìnnà réré tí wọ́n sì tipa bẹ́ẹ̀ jẹ́ kí èèyàn méjì má bàa yí padà tàbí pa á run lẹ́ẹ̀kan náà. Module: Atunto iṣeto ni package; Fun apẹẹrẹ, o le lo module "ṣeto nẹtiwọki kan" ni ọpọlọpọ awọn iṣẹ akanṣe.

Italologo: Awọn lewu julo ami ni a Terraform o wu ni a run tabi -/+ (ropo) awọn ila ni o wu ètò. Iwọnyi tumọ si pe awọn orisun yoo paarẹ. Ti o ba ri iparun airotẹlẹ ni ero kan, ko lo, ni oye akọkọ idi ti o fi han.

Igbesẹ nipasẹ igbese: Kikọ IaC pẹlu AI

  1. Ṣe alaye awọn amayederun ti o fẹ. Jẹ nja bi "VPC kan, awọn subnets meji, ẹgbẹ aabo kan ati ọkan t3.micro EC2 lori eu-central-1".
  2. Pato olupese ati ẹya. Iru awọsanma wo ni Terraform ati ẹya olupese? Ti o ko ba ṣe pato ẹya kan, AI le pada sintasi ti igba atijọ/ti ko ni ibamu.
  3. Ṣe agbejade apẹrẹ HCL. Tun beere awọn oniyipada ati awọn abajade.
  4. Mu Asiri jade. Awọn iye bii awọn ọrọ igbaniwọle ati awọn bọtini yẹ ki o lọ si oniyipada ati ifinkan aṣiri, kii ṣe si koodu naa.
  5. Ṣiṣe `init` + `ètò`. Ka laini igbejade eto nipasẹ laini; Ṣayẹwo fun awọn piparẹ airotẹlẹ.
  6. Bẹrẹ kekere, ṣe diẹdiẹ. Waye ni akọọlẹ idanwo ti o ya sọtọ / agbegbe ni akọkọ.

Aabo: IaC-pato ewu

IaC jẹ eewu bi o ṣe lagbara. Awọn aaye pataki mẹta:

  1. Aṣiri kan wa ninu faili ipinlẹ naa. Ipinlẹ Terraform nigbakan tọju awọn iye ifarabalẹ, gẹgẹbi awọn ọrọ igbaniwọle data, ni ọrọ mimọ. Maṣe fi Ipinle sinu ibi ipamọ gbogbo eniyan; Lo fifi ẹnọ kọ nkan, ihamọ-wiwọle isakoṣo latọna jijin.
  2. Maṣe fi awọn aṣiri sinu HCL. Awọn laini bii ọrọ igbaniwọle = "prod123" jẹ kikọ titilai si itan-akọọlẹ Git. Dipo, lo oniyipada kan ki o fun ni iye ni akoko ṣiṣe lati oniyipada ayika (TF_VAR_...) tabi ifinkan ikọkọ.
  3. Igbanilaaye IAM gbooro pupọ. AI nigbakan ṣe agbejade awọn bulọọki bii Iṣe: “*” (gba ohun gbogbo laaye) lati “jẹ ki o ṣiṣẹ”. Eyi jẹ ailagbara; dín igbanilaaye si kere ti a beere.
Akiyesi: Ni kete ti aṣiri kan ba wọ inu itan-akọọlẹ Git, o wa ni iṣaaju ati pe o le gbogun, paapaa ti o ba paarẹ faili naa. Ti o ba ṣe nipasẹ aṣiṣe, fagilee lẹsẹkẹsẹ ki o yi aṣiri naa pada; O kan pipaarẹ ko to.

Ewu ètò ami tabili

Eto titẹjade

Itumo

kini lati ṣe

+ ṣẹda

Awọn orisun titun yoo wa ni afikun

Ni gbogbogbo ailewu, atunyẹwo botilẹjẹpe

~ imudojuiwọn ni-ibi

Orisun yoo yipada lori aaye

Jẹrisi ipa (njẹ ijade yoo wa bi?)

-/+ ropo

Yoo paarẹ ati tun ṣe

Išọra: pipadanu data le ṣẹlẹ

- run

Awọn oluşewadi yoo run

Duro: maṣe waye ti o ko ba nireti

mẹta mini igba

Ọran 1 - iṣẹ ọjọ 2 ni awọn wakati 3. Ẹgbẹ kan yoo kọ Terraform lati ṣeto agbegbe idanwo tuntun (VPC, subnets, database RDS, iṣupọ ECS) ṣugbọn wọn ṣẹṣẹ gbe lọ si HCL. Wọn ṣapejuwe faaji ati awọn ẹya si AI ati ṣe agbejade alaworan apọjuwọn kan. Nwọn si wadi kọọkan module pẹlu awọn ètò ati ki o ní o soke ati ki o nṣiṣẹ ni 3 wakati; Yoo gba wọn ọjọ meji ti idanwo afọwọṣe ati aṣiṣe.

Ọran 2 - ero naa mu piparẹ kan. Onimọ-ẹrọ nṣiṣẹ ero kan laisi lilo koodu imudojuiwọn ti AI ti ipilẹṣẹ. Ijade ti o wa ninu -/+ rọpo fun ibi ipamọ data iṣelọpọ - AI gbidanwo lati rọpo aaye ti kii ṣe rirọpo, eyiti o tumọ si piparẹ ati atunda data naa. Onimọ-ẹrọ duro lilo ati yi iyipada pada si ọna ailewu. Iwa ti iṣeto ṣe idiwọ ajalu kan.

Case 3 - sin ìkọkọ jo. A junior, YZ ti oniṣowo db_password = "S3cret!" O ṣe ila bi o ti jẹ o si ti i. Ti mu ni atunyẹwo koodu; Ọrọigbaniwọle ti paarẹ lẹsẹkẹsẹ ati yipada, iye naa ti gbe lọ si oniyipada ati jẹun lati inu ifinkan ikoko. Ẹkọ: Ko si awọn aṣiri ti o han gbangba ni HCL.

Mẹrin daakọ awọn awoṣe

1) Ṣiṣẹda apẹrẹ amayederun:

Kọ awọn amayederun wọnyi lori [CLOUD: AWS] pẹlu Terraform (ẹya ~> 1.7): [AKỌỌRỌ ORISUN]. Ekun [X]. Awọn ofin: - Ṣe gbogbo awọn iye ifura jẹ iyipada, maṣe fi wọn sinu HCL.- Ṣe atunṣe ẹya olupese (awọn olupese_required) - Dinku awọn igbanilaaye IAM, maṣe lo "*" - Pada [X, Y] bi abajade Fun koodu modularly ati pẹlu awọn alaye.

2) Itumọ igbejade ero:

Ṣe itupalẹ igbejade 'ero terraform' ni isalẹ. Ṣe atokọ mi: (1) kini awọn orisun ti a ṣafikun / yipada / paarẹ, (2) awọn ori ila ti o wa ninu eewu pipadanu data tabi idilọwọ, (3) Awọn ibeere 3 ti MO yẹ ki o beere ṣaaju lilo. Eto: [OUTPUT]

3) Ṣayẹwo HCL ti o wa fun aabo:

Ṣayẹwo koodu Terraform atẹle fun aabo: aṣiri ti a fi sinu, igbanilaaye IAM ti o gbooro pupọ, ofin nẹtiwọọki ṣiṣi (0.0.0.0/0), ibi ipamọ ti ko pa akoonu? Kọ wiwa kọọkan ni aṣẹ pataki ati atunṣe. Kóòdù: [HCL]

4) Yi koodu atunwi pada si module:

Ṣe iyipada koodu Terraform atunwi atẹle yii sinu module reusable: kini awọn iye yẹ ki o jẹ awọn oniyipada, kini o yẹ ki wiwo module jẹ? Tun ṣe afihan lilo apẹẹrẹ. Kóòdù: [HCL]

Ailagbara kiakia / Alagbara kiakia

Alailagbara: "Ṣẹda data data pẹlu Terraform."

Abajade: koyewa iru awọsanma, iru ẹrọ, iru ẹya, ti paroko tabi rara; Pẹlu sintasi julọ, AI le pese apẹẹrẹ ti o wa ni gbangba ti o fi ọrọ igbaniwọle sinu koodu naa.

Alagbara: "Ṣẹda apẹẹrẹ RDS PostgreSQL 15 kan lori AWS pẹlu Terraform ~> 1.7. Ṣe iyipada ọrọ igbaniwọle, ma ṣe fi sii sinu koodu naa. Ibi ipamọ ti paroko, wiwọle nikan lati inu subnet ikọkọ, kii ṣe ti gbogbo eniyan. Fix version olupese. Pada ipari ipari bi o ti wu jade. "

Iyatọ: itọka keji yoo fun ẹrọ, ẹya, fifi ẹnọ kọ nkan, idiwọ nẹtiwọki ati ofin aṣiri - iṣelọpọ jẹ aabo ati sunmọ prod.

Awọn aṣiṣe ti o wọpọ

  • Lati 'bere' lai ṣe 'eto' kan. Aṣiṣe ti o gbowolori julọ ni IaC; nigbagbogbo gbero akọkọ.
  • Ifibọ Secret ni HCL. Ṣẹda jijo ayeraye sinu itan Git.
  • Titoju State insecure. Aiṣii, ṣiṣi silẹ, ipinlẹ gbogbo eniyan jẹ ajalu kan.
  • Ko ṣe atunṣe ẹya naa. Lilo olupese laisi pato ẹya kan yoo ja si awọn ikuna lojiji ni ọjọ iwaju.
  • *`Iṣe: Igbanilaaye gbooro gẹgẹbi ""."
  • Ni aifiyesi `iparun' airotẹlẹ. Lilo awọn laini piparẹ ninu Eto laisi ibeere.

Ni akojọpọ

IaC yi awọn amayederun pada si atunwi, ti ikede, ati koodu iṣatunṣe; Ọpa ti o wọpọ julọ jẹ Terraform. AI ni kiakia ṣe agbejade awọn stubs HCL, ṣugbọn o gbọdọ pese ẹya, awọn alaye awọsanma-pato, ati awọn ofin aabo. Ofin aiṣedeede ni Terraform: lati rii gbogbo iyipada pẹlu ero kan, lati beere awọn piparẹ airotẹlẹ, lati tọju awọn aṣiri kuro ninu koodu ati lati tọju ipinlẹ ni aabo. Awọn run ki o si ropo ila ni a ètò o wu ni o wa awọn aaye ti o yẹ ki o wa ka julọ fara.

Ohun elo iṣẹ-ṣiṣe

Jẹ ki AI ṣe agbekalẹ awọn amayederun kekere kan (fun apẹẹrẹ garawa ipamọ ati eto imulo iwọle) ni lilo awoṣe “Ṣiṣẹda aworan afọwọya” loke. Lẹhinna: (1) ni ayẹwo awoṣe “vetting” fun aṣiri tabi * awọn igbanilaaye ti a fi sii ninu koodu; (2) ti o ba ṣeeṣe, ṣiṣe init + ètò ni akọọlẹ idanwo kan ki o ka iṣẹjade ero pẹlu awoṣe “itumọ ero”; (3) ṣe akiyesi eyikeyi awọn piparẹ/awọn ayipada airotẹlẹ.

akojọ ayẹwo

  • [] Mo ṣafikun awọsanma, Terraform/ẹya olupese, ati fifi ẹnọ kọ nkan / awọn ihamọ nẹtiwọki si tọ mi.
  • [] Ko si aṣiri itele ninu koodu; konge iye iyipada.
  • [] Mo dín IAM / awọn igbanilaaye si awọn igbanilaaye kekere, * Emi ko lo.
  • [] Mo ti sare eto ṣaaju ki o to waye ati ki o ka awọn ti o wu ila nipa ila.
  • [] Mo ti wadi wipe o wa ni ko si airotẹlẹ run / rirọpo ninu awọn Eto.
  • [] Mo ni idaniloju pe ipinle naa wa ni ipamọ, titiipa ati ihamọ ẹhin.