Bölüm 9 / 11

Ssenarist we awtomatlaşdyryş nesli: Baş, Python we PowerShell

Girdeji:

  • “Bash”, “Python” we “PowerShell” -iň güýçli taraplaryna düşünmek we emeli intellektiň ygtybarly, goralýan skript eserlerini öndürmegi;
  • Set -euo pipefail, boş üýtgeýän barlag, gury işleýiş tertibi we hasaba alyş ýaly skriptlere garawul goşmak ukyby;
  • Weýran ediji buýruklary okamak we olary izolirlenen gurşawda we ilki bilen gury görnüşde synap görmek we syry skriptde goýmazlyk düzgünini ulanmak.

“DevOps” -yň ruhy bir sözlemde jemlenendir: “Iki gezek eden işiňizi awtomatlaşdyryň.” El bilen ýerine ýetirilýän islendik gaýtalanýan mesele - gündeligi arassalamak, ätiýaçlyk nusgasyny almak, serweriň saglygyny barlamak, faýllary gaýtadan işlemek - wagt talap edýär we netijede adam ýalňyşlygy bilen zaýalanýar. Scriptazgylar bu işleri öz üstüne alýar: yzygiderli, ygtybarly we gaýtalanyp boljak bir topar buýruklary ýerine ýetirýän kiçi programmalar. DevOps hünärmeni ýygy-ýygydan üç dili ulanýar: Baş (Linux / Unix gabyk skriptleri üçin), Python (çylşyrymly logika, API çagyryşy, maglumatlary manipulirlemek üçin) we PowerShell (Windows we bulut dolandyryşy üçin).

AI, belki-de, ssenariý döretmekde iň amaly bahany hödürleýän ýeri: bir sözlemli düşündirişden iş taslamasyny öndürmek, syrly näsazlygy çözmek, skripti başga dile terjime etmek. Blindöne skript kör işledilende howply - nädogry rm, Remove-item -Recurse faýllary yzyna gaýtaryp bolmaz. Şonuň üçin bu bölümiň şygary: AI skript ýazsyn, ony okaň, ilki howpsuz tertipde synap görüň, soň işlediň.

Haýsy dili saýlamaly we haçan? Gödek düzgün: eger iş yzygiderli birnäçe ulgam buýruklaryny işletmekden ybarat bolsa (faýly göçüriň, hyzmaty täzeden açyň, arhiwi alyň) Baş iň tebigy saýlawdyr, sebäbi Linux serwerlerde hemme ýerde bar. Eger iş karar logikasyny, aýlawy, maglumatlary üýtgetmegi, API talap etmegi ýa-da JSON gaýtadan işlemegi, ýagny 20 setirden geçýän logikany öz içine alýan bolsa, Python okalmagy we baý kitaphanalary bilen tapawutlanýar; Çylşyrymly Baş skripti çalt düşünip bolmaýar, Python bolsa saklamak aňsat bolýar. Bu iş Windows serwerlerini, “Active Directory” ýa-da “Azure” -ni dolandyrmagy öz içine alýan bolsa, “PowerShell” tebigy gurşawdyr, sebäbi obýekte gönükdirilen tebigat bu platformalar bilen çuňňur birleşýär. Haýsy dili saýlandygyňyzy we AI-den skript talap edeniňizde, çykyşyň daşky gurşawyňyz üçin laýyk we manysyz bolmagyny üpjün edýär.

Stepdim-ädim: ygtybarly skript döretmek

  1. Wezipe we daşky gurşawy suratlandyryň. Näme eder, haýsy OS / gabyk, haýsy çäklendirmeler?
  2. Howpsuzlyk berkitmelerini soraň. Başda, -euo pipefail belläň (ýalňyşlygy bes ediň, kesgitlenmedik üýtgeýjide duruň), howply amallary tassyklaýjy haýyş, pozmagyň ýerine ilki hereket ediň.
  3. Gury işleýiş tertibini soraň. Scriptazgy bilen näme etmelidigini ýazsyn - guradyň, ýöne etmäň.
  4. Oka we düşün. Her hataryň näme edýändigini barlaň, esasanam pozuň / göçüriň / tor amallaryny.
  5. Aýry-aýry ýerlerde synap görüň. Synag bukjasynda, nusga maglumatlary bilen işlediň.
  6. Hasaba giriň. Scriptazgy, soňrak görmek üçin näme edýändigini ýazsyn.

Howpsuz skriptiň esaslary

Önümçilik skriptinde şu garawullar bolmaly:

  • Erroralňyşlyk bolan ýagdaýynda durmak. Baş: set -uo turbageçiriji. PowerShell: $ ErrorActionPreference = 'Dur'. Bir ädim şowsuz bolsa, indiki ädimler işlemeli däldir.
  • Işsizlik (gaýtalanmak). Scriptazgy iki gezek işleýän bolsa, iki esse zyýan çekmeli däldir; "Eger sizde eýýäm bar bolsa, geçiň" logikasy.
  • Makullamak we guratmak. Weýran ediji amallar üçin "ynanýarsyňyzmy?" ýa-da gurak baýdak.
  • Giriş tassyklamasy Parametrler garaşylşy ýalymy? Boş üýtgeýji rm -rf "$ DIR" / rm -rf / betbagtçylyga öwrüp biler.
  • Gingurnal. Nämäniň we haçan edilendigini ýazga al.
Maslahat: Başdaky iň howply ýalňyşlyk, boş üýtgeýän bilen öçürmek. rm -rf "$ DIR" $ DIR boş bolsa kök katalogy pozmaga synanyşýar. set -u (kesgitlenmedik üýtgeýjiniň üstünde dur) we pozmazdan ozal [-n "$ DIR"] barlamak halas ediji. AI-den skriptler soralanda bu goraglary aç-açan soraň.

Howpsuzlyk: gizlin we weýran ediji buýruklar

Iki uly howp:

  1. Gizlin ssenariýa ornaşdyrmak. Parol bellik skriptiniň içinde açyk tekst bolmaly däldir; Daşky gurşaw üýtgeýjisinden ýa-da kümmetden okalmaly. Ripazgylar Gite girýär; gömülen syr hemişelik syzmakdyr.
  2. Weýran ediji buýruklar. rm -rf, Remove-item -Recurse -Force, DROP TABLE, terraform ýok etmek - bulary skriptde göreniňizde, iki gezek pikirleniň. Ilki bilen AI tarapyndan döredilen weýran ediji buýrugy synap görmäň.
Üns beriň: AI-e "bu faýllary arassalaýan skript ýazyň" diýseňiz, tapmagyň çägini üns bilen okaň ... -Delete ýa-da rm buýrugy. Wideo kartasy (*) ýa-da nädogry ýol, pozmak isleýän zadyňyzdan has köp pozular. Elmydama pozmagyň ýerine ilki bilen "ýok etmek sanawy" rejimi bilen işlediň.

Üç dili deňeşdirmek

ölçegi

bash

Python

PowerShell

Iň gowusy

Linux gaby, buýruk zynjyry

Çylşyrymly logika, API, maglumatlar

Windows bulut dolandyryşy

Okuw egrisi

Orta (duzakly)

aňsat

orta

Roralňyşlyk

-euo turbageçiriji

synap görüň / başga

synap görüň / tutuň, -ErrorAction

ykjamlygy

Unix / Linux / mac

hemme ýerde

Çyzgyly platforma (PS 7+)

haçan

Gysga, ulgam işleýär

Logika 20 setirden uzyn

Windows / AD / Azure

üç sany kiçi halat

Mysal 1 - 2 sagat senet 5 minutda. Bir inerener her hepde 40 serwerden surnallary ýygnamak we arhiwlemek üçin 2 sagat sarp edýärdi. AI bu meseläni suratlandyrmagy we -euo pipefail + gury goraglary goýmagy we Baş skriptini döretmegini isledi. Ilki bilen skripti gury görnüşde tassyklady, soňra meýilleşdirilen wezipe (kron) bilen baglanyşdyrdy. Hepdelik iş 5 minuta çenli azalýar we adam ýalňyşlygy ýok edilýär.

2-nji waka - üýtgeýän betbagtçylygyň öňüni aldy. AI tarapyndan öndürilen arassalaýyş ýazgysynda rm -rf "$ TARGET" / * bardy, ýöne TARGET bir ýere bellenmedik bolsa, boş galdy. Ol inerener bolup okaýarka düşündi; set -u we [-n "$ TARGET"] || çykyş 1 gözegçiligi goşuldy. Synag wagtynda üýtgeýjiniň güýji ýokdy we skript katastrofiki däl-de, howpsuz saklandy.

3-nji hadysa - oturdylan belgi. Amatlylyk üçin, AI API talap edýän Python skriptine TOKEN = "ghp_realtoken" setirini goşdy (mysal üçin). Inerener muny aýyrdy we os.environ ["TOKEN"] bilen daşky gurşaw üýtgeýjisinden okamaga üýtgetdi we belligi ýatyrdy we täzeledi. Scriptazgy Git-e giden bolsa, bellik köpçülige açyk bolar.

Göçürip boljak dört şablon

1) Howpsuz Baş skripti:

Baş skript ýazyň: [TASK]. Hökmany düzgünler: - başda "set -euo pipefail" belläň.- Öçürijiniň pozulýan / hereket edýän ýerinde boş däldigini barlaň. Daşky gurşaw üýtgeýjisinden okaň. - Her ädimde maglumat gündeligini çap ediň. Scriptazgyny düşündiriň we iň howply setiri belläň.

2) Ssenariniň beýany / gözegçilik:

Aşakdaky skript setirini setir boýunça suratlandyryň we howpsuzlygy barlaň: goýlan gizlin, weýran ediji buýruk (rm / Remove-Item / DROP), nädogry giriş, ýalňyş işlemegiň ýoklugy? Her töwekgelçiligi ähmiýeti we düzedişi boýunça ýazyň. Scriptazgy: [KOD]

3) Dil terjimesi:

Şol [SOURCE LANGUAGE] skriptini [TARGET LANGUAGE] terjime ediň. Özüňi alyp barşyň sözlerini sakla, maksat diliniň ýalňyş ýalňyşlyklaryny ulan, islendik syrlary daşky gurşaw üýtgeýjisine geçir. Başgaça alyp barjak nokatlara üns beriň. Scriptazgy: [KOD]

4) Meýilleşdirilen mesele (kron / meýilleşdirilen mesele):

Bu ýazgyny ulanyň [FREQUENCY: meselem. [Her gije sagat 02: 00-da işlejek meýilnama kesgitlemesini ýazyň ([cron / systemd timer / Windows Task Planuler]). Şowsuzlyk barada maňa nädip duýduryş bermelidigini (log / çykyş kody / habarnamasy) we bir-biriniň üstünden düşmeginiň öňüni alyň.

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

Gowşak: "Köne faýllary pozýan skript ýazyň."

Netije: çäksiz, goralmadyk, gury işlemeýän rm skripti; Nädogry bukjada işleýän bolsa, yzyna gaýtaryp bolmaz.

Güýçli: "/ var / log / app astynda 30 günden uly .log faýllaryny ýok etmek üçin baş skript ýazyň. Set -euo pipefail ulanyň, maksatly katalog boş bolsa duruzyň, ilki bilen nämäni pozmalydygyny sanaň, ilki bilen amal ediň, syry goýmaň. Iň howply setiri belläň."

Tapawut: ikinji talap doly gurşawy, howpsuzlyk garawullaryny we gurak garaşmagy berýär; Çykyş ygtybarly işledilip bilner.

Adaty ýalňyşlyklar

  • Scriptazgyny okamazdan işletmek. Esasanam hatarlary aýyrmak / göçürmek betbagtçylyga sebäp bolýar.
  • Boş üýtgeýänleri barlamaýan. Rm -rf "$ X" / bilen kök katalogy pozmagyň klassiki betbagtlygy.
  • "set -euo pipefail" / "-ErrorAction Stop" -dan geçiň. Bir ädim ot alýar, ssenariýa kör dowam edýär.
  • Gizlin ssenariýa ornaşdyrmak. Git-e yzygiderli syzmak.
  • Gurak işlemezden weýran ediji proses. Ilki "näme etmelidigimi görkez", soň et.
  • Ilkinji synanyşyk. Aýry-aýry synag gurşawy bolmazdan işlemek.

Gysgaça

“DevOps” awtomatlaşdyryş sungatydyr; Gaýtalanýan işler Baş, Python we PowerShell skriptlerine berilýär. AI skriptleri taýýarlamakda, düzedişleri düzmekde we dilleri terjime etmekde örän amatly - ýöne ygtybarly skriptde set -euo pipefail, null üýtgeýän barlagy, gury işleýiş tertibi, içerki gizlinlik we hasaba alyş ýaly säwlik goragçylary bolmaly. Her ýazgyny, esasanam weýran ediji buýruklary öz içine alýan gurşawda we ilki bilen gury görnüşde okamak we synagdan geçirmek siziň jogapkärçiligiňizdir.

Programma meselesi

Gaýtalanýan meseläni saýlaň (gündelik arhiwlemek, ätiýaçlyk nusgasy, arassalamak). (1) AI-den "Howpsuz Baş skript" şablony bilen goralýan skript döretmegini isläň. (2) Howpsuzlygy "Scriptazgy düşündirişi / audit" şablony bilen barlaň we AI-iň bellän iň howply setirini tapyň. (3) Synag bukjasyndaky nusga faýllary bilen skripti işledip, özüni alyp barşyny barlaň, ilki bilen - gurak işlediň.

gözegçilik sanawy

  • [] Men islemeýän meseläni, OS / gabyk we howpsuzlyk goragçylary ýazdym.
  • [] Scriptazgyda -euo pipefail / -ErrorAction Stop ýaly durmakda ýalňyşlyk bar.
  • [] Öçürmek / göçürmezden ozal boş üýtgeýjini we giriş barlagyny goşdum.
  • [] Weýran ediji amallar üçin - guramak / tassyklamak mehanizmi bar.
  • [] Scriptazgyda hiç hili syr ýok; bahalar daşky gurşaw üýtgeýjisinden / ýagdaýyndan gelýär.
  • [] Ilkinji synagy gury görnüşde izolirlenen synag gurşawynda etdim.