Bölüm 3 / 11

Kod hökmünde infrastrukturany dolandyrmak: Terraform we IaC bilen emeli intellekt

Girdeji:

  • IaC düşünjesine we Terraform-yň iş sikline düşünmek (init, meýilleşdirmek, ulanmak, döwlet, modul) we emeli intellektiň ygtybarly HCL garalamalaryny öndürmegi;
  • Her üýtgeşmäni meýilnama bilen barlamak we garaşylmadyk ýok etmek / çalyşmak setirlerini tutmak
  • Gizlin syrlary koddan çykarmak, döwleti howpsuz saklamak we IAM rugsatlaryny azaltmak ýörelgelerini ulanmak ukyby;

Geçmişde serwer gurmak bulut paneline basmak bilen baglanyşyklydy: wirtual maşyn döretmek, tor gurmak, howpsuzlyk düzgünini goşmak. Bu usul haýal, ýalňyş we ýygy-ýygydan gaýtalanyp bolmaýardy - şol bir gurşawy ikinji gezek gurmak mümkin däldi. Häzirki wagtda infrastruktura kod hökmünde dolandyrylýar. IaC (Kod ýaly infrastruktura), bulut çeşmelerini serwerler, torlar we maglumat faýllary ýaly tekst faýllarynda el bilen däl-de, beýan etmek üçin çemeleşme. Bu faýllar wersiýa gözegçilikinde (Git) oturýarlar; Kimiň, haçan we näme üýtgedendigini görüp bilersiňiz; Bir buýruk bilen şol bir infrastrukturany birnäçe gezek, edil şol bir görnüşde gurup bilersiňiz.

Iň ýaýran IaC guraly Terraform. Terraform, HCL (HashiCorp konfigurasiýa dili - Terraformyň konfigurasiýa dili) atly okalýan dilde ýazýan kesgitlemeleriňizi alýar, bulut üpjün edijisiniň (AWS, Azure, GCP) API-ä terjime edýär we çeşmeler döredýär. AI HCL-ni gaty gowy bilýär we çylşyrymly bloklary çalt öndürýär. Emma IaC-da ýalňyşlygyň bahasy gaty ýokary: bir ýalňyş kesgitleme tutuş önümçilik maglumatlar bazasyny ýok edip biler. Şonuň üçin Terraformdaky altyn düzgün, her üýtgeşmäni durmuşa geçirmezden ozal “meýilnama” bilen görmekdir.

Terraformyň iş wagty

Terraform üç esasy buýruk bilen işleýär - bularyň AI çykaryşyna gözegçilik etmek üçin zerur şertdigini bilmek:

  • "terraform init": Taslama başlaýar, zerur üpjün ediji pluginlerini göçürip alýar.
  • "terraform meýilnamasy": Häzirki ýagdaýy islenýän ýagdaý bilen deňeşdirýär we nämäni goşmalydygyny, nämäni üýtgetmelidigini, nämäni pozmalydygyny görkezýär. Hiç zady amala aşyrmaýar. Howpsuzlyk boýunça iň möhüm ädimdir.
  • "terraform apply": Resurslary döretmek / üýtgetmek meýilnamany hakykatda ulanýar.

Mundan başga-da, iki düşünje möhümdir. Döwlet (döwlet faýly): Terraform dolandyrýan çeşmeleriniň häzirki ýagdaýyny saklaýan faýl; Iki adam bir wagtyň özünde üýtgedip ýa-da ýok edip bilmez ýaly, adatça uzak we gulplanan ammarda saklanýar. Modul: Gaýtadan ulanylýan konfigurasiýa bukjasy; Mysal üçin, "tor gurmak" modulyny köp taslamada ulanyp bilersiňiz.

Maslahat: Terraform çykyşynda iň howply alamat, meýilnamanyň çykyşynda setirleri ýok etmek ýa-da - / + (çalyşmak). Bular çeşmäniň ýok ediljekdigini aňladýar. Meýilnamada garaşylmadyk weýrançylygy görseňiz, hiç haçan ýüz tutmaň, ilki näme üçin peýda bolandygyna düşüniň.

Stepdimme-ädim: AI bilen IaC ýazmak

  1. Islenýän infrastrukturany aýdyňlaşdyryň. "Eu-merkezi-1-de bir VPC, iki subnet, bir howpsuzlyk topary we bir t3.micro EC2" ýaly anyk boluň.
  2. Üpjün edijini we wersiýasyny görkeziň. Haýsy bulut, haýsy Terraform we üpjün ediji wersiýasy? Wersiýasyny görkezmeseňiz, AI köne / gabat gelmeýän sintaksis yzyna gaýdyp biler.
  3. HCL taslamasyny öndüriň. Şeýle hem üýtgeýjileri we netijeleri soraň.
  4. Gizlin çykaryň. Parollar we düwmeler ýaly bahalar koda däl-de, üýtgeýän we gizlin ammarlara geçmeli.
  5. "Init" + "meýilnamany" işlediň. Meýilnamanyň çykyş setirini setir boýunça okaň; Garaşylmadyk öçürmeleri barlaň.
  6. Kiçijek başlaň, ýuwaş-ýuwaşdan durmuşa geçiriň. Ilki bilen izolirlenen synag hasaby / gurşawynda ulanyň.

Howpsuzlyk: IaC-a mahsus töwekgelçilikler

IaC güýçli bolşy ýaly töwekgelçiliklidir. Üç möhüm nokat:

  1. Döwlet faýlynda bir syr bar. Terraform ýagdaýy käwagt maglumatlar bazasynyň parollary ýaly duýgur bahalary ýönekeý tekstde saklaýar. Döwleti hiç wagt jemgyýetçilik ammaryna salmaň; Şifrlenen, çäklendirilen giriş arka arkasyny ulanyň.
  2. HCL-de syrlary goýmaň. Parol = "prod123" ýaly setirler Git taryhyna hemişelik ýazylýar. Munuň ýerine üýtgeýjini ulanyň we daşky gurşaw üýtgeýjisinden (TF_VAR _...) ýa-da gizlin kümmetden baha beriň.
  3. Gaty giň IAM rugsady. AI käwagt Hereket: "*" (hemme zada rugsat beriň) ýaly bloklary öndürýär. Bu gowşaklyk; rugsady talap edilýän iň az derejede çäklendiriň.
Üns beriň: Git taryhyna bir syr girensoň, geçmişde galar we faýly pozsaňyzam zyýan çekip biler. Mistakealňyşlyk bilen etseňiz, syry derrew ýatyryň we aýlaň; Diňe pozmak ýeterlik däl.

Töwekgelçilikli meýilnama tablisa gol çekýär

Çap etmegi meýilleşdiriň

Manysy

näme etmeli

+ döretmek

Täze çeşme goşular

Umuman howpsuz, ýöne gözden geçiriň

ýerinde täzeläň

Çeşme sahypada üýtgär

Täsirini barlaň (kesiş bolarmy?)

- / + çalyşmak

Öçüriler we dörediler

DU CADURYŞ: maglumatlaryň ýitmegi bolup biler

- ýok etmek

Resurs ýok ediler

STOP: garaşmaýan bolsaňyz hiç haçan ýüz tutmaň

üç sany kiçi halat

Mysal 1 - 2 günlük iş 3 sagatda. Bir topar täze synag gurşawyny (VPC, subnets, RDS maglumatlar bazasy, ECS klasteri) döretmek üçin Terraform ýazjakdy, ýöne ýaňy HCL-e göçüpdiler. AI-de arhitekturany we wersiýalaryny beýan etdiler we modully meýilnama taýýarladylar. Her moduly meýilnama bilen barladylar we 3 sagadyň içinde işlediler; Olara iki gün el bilen synag we ýalňyşlyk gerek bolar.

2-nji waka - meýilnama öçürildi. Bir inerener, AI tarapyndan döredilen täzelenme koduny ulanman meýilnama işledi. Önümçilik maglumatlar bazasynyň ýerine - / + çalyşýar - AI maglumatlar bazasyny pozmagy we gaýtadan dikeltmegi aňladýan çalşylmaýan meýdany çalyşmaga synanyşdy. Inerener ýüz tutmagy bes etdi we üýtgetmäni ygtybarly usula üýtgetdi. Meýilleşdirmek endigi betbagtçylygyň öňüni aldy.

3-nji hadysa - gizlin syzmak. Kiçijik, YZ db_password = "S3cret!" Setiri bolşy ýaly etdi we itekledi. Kod gözden geçirilende tutuldy; Parol derrew ýatyryldy we üýtgedildi, bahasy üýtgeýjä geçirildi we gizlin ammardan iýmitlendi. Sapak: HCL-de hiç haçan aç-açan syr ýok.

Göçürip boljak dört şablon

1) Infrastrukturanyň taslamasyny döretmek:

Terraform bilen (CLOUD: AWS) aşakdaky infrastrukturany ýazyň (wersiýa ~> 1.7): [SOURCE LIST]. Sebit [X]. Düzgünler: - senshli duýgur bahalary üýtgediň, olary HCL-de goýmaň. - Üpjün edijiniň wersiýasyny düzediň (zerur_providers) .- IAM rugsatlaryny azaldyň, "*" ulanmaň .- [X, Y] çykyş hökmünde yzyna gaýdyň. Kod modully we düşündirişli beriň.

2) Meýilnamanyň netijesini düşündirmek:

Aşakdaky 'terraform meýilnamasynyň' çykyşyny derňäň. Meni sanaň: (1) haýsy çeşmeler goşuldy / üýtgedildi / Öçürildi, (2) maglumatlaryň ýitmegi ýa-da kesilmegi töwekgelçiligi bolan hatarlar, (3) ýüz tutmazdan ozal bermeli 3 soragym. Meýilnama: [OUTPUT]

3) Howpsuzlyk üçin bar bolan HCL-i gözden geçiriň:

Howpsuzlyk üçin aşakdaky Terraform koduny barlaň: içerki syr, aşa giň IAM rugsady, açyk ulgam düzgüni (0.0.0.0/0), şifrlenen ammar? Her tapyndy ähmiýeti we düzedişi boýunça ýazyň. Kod: [HCL]

4) Gaýtalanýan kody modula öwüriň:

Aşakdaky gaýtalanýan Terraform koduny gaýtadan ulanylýan modula öwüriň: haýsy bahalar üýtgeýän bolmaly, modul interfeýsi nähili bolmaly? Şeýle hem mysal ulanylyşyny görkeziň. Kod: [HCL]

Gowşak haýyş / Güýçli haýyş

Gowşak: "Terraform bilen maglumat bazasyny dörediň."

Netije: haýsy buludyň, haýsy dwigateliň, haýsy wersiýanyň şifrlenendigi ýa-da ýokdugy belli däl; Miras sintaksis bilen, paroly koda girizýän köpçülige açyk mysal berip biler.

Güýçli: "AWS-de Terraform ~> 1.7 bilen RDS PostgreSQL 15 mysal dörediň. Paroly üýtgediň, koda salmaň. Saklama şifrlenen, diňe hususy subnetden girip bolýar, köpçülige açyk däl. Prowaýderiň wersiýasyny düzediň.

Tapawut: ikinji haýyş motory, wersiýany, şifrlemäni, tor çäklendirmesini we gizlin düzgüni berýär - çykyş ygtybarly we önüme ýakyn.

Adaty ýalňyşlyklar

  • "Meýilnama" düzmän "ýüz tutmak". IaC-da iň gymmat ýalňyşlyk; elmydama ilki meýilleşdir.
  • HCL-de ýerleşdirmegiň syry. Git taryhyna hemişelik syzyş döredýär.
  • Döwlet howpsuzlygyny saklamak. Şifrlenmedik, açylmadyk, jemgyýetçilik ýagdaýy betbagtçylyk.
  • Wersiýasyny düzetmezlik. Wersiýasyny görkezmän üpjün edijini ulanmak geljekde duýdansyz şowsuzlyga sebäp bolar.
  • * "Hereket:" "" ýaly giň rugsat. ** Iň az artykmaçlyk ýörelgesini bozýar.
  • Garaşylmadyk "ýok etmek" äsgermezlik etmek. Öçürmek setirlerini soragsyz ulanmak.

Gysgaça

IaC infrastrukturany gaýtalanýan, üýtgedip bolýan we eşidilýän koda öwürýär; Iň ýaýran gural Terraform. AI çalt HCL stublaryny öndürýär, ýöne wersiýasyny, buluda mahsus jikme-jiklikleri we howpsuzlyk düzgünlerini bermeli. Terraformdaky ýalňyş düzgün: her üýtgeşmäni meýilnama bilen görmek, garaşylmadyk öçürmeleri gözlemek, syrlary koddan uzaklaşdyrmak we döwleti howpsuz saklamak. Meýilnamadaky setirleri ýok etmek we çalyşmak iň ünsli okalmaly ýerlerdir.

Programma meselesi

AI ýokardaky "Infrastruktura eskizini dörediň" şablonyny ulanyp, kiçijik infrastrukturany (meselem, ammar çelegi we giriş syýasaty) dörediň. Soňra: (1) koda goýlan gizlin ýa-da * rugsatlary barlamak üçin "barlag" şablony barlaň; (2) mümkin bolsa synag hasabynda init + meýilnamany işlediň we meýilnamanyň netijesini "meýilnamany düşündirmek" şablony bilen okaň; (3) garaşylmadyk öçürmeleri / üýtgeşmeleri belläň.

gözegçilik sanawy

  • [] Men islegime bulut, Terraform / üpjün ediji wersiýasyny we şifrlemek / tor çäklendirmelerini goşdum.
  • [] Kodda aç-açan syr ýok; takyklyk bahalary üýtgeýär.
  • [] IAM / rugsatlary minimal rugsatlara çenli gysgaltdym, * ulanmadym.
  • [] Programmany ulanmazdan ozal işledim we çykyş setirini setir boýunça okadym.
  • [] Meýilnamada garaşylmadyk ýok etmek / çalyşmagyň ýokdugyny tassykladym.
  • [] Döwletiň şifrlenen, gulplanan we çäklendirilen arkasynda saklanýandygyna ynanýaryn.