Eining 9 / 11

Script og sjálfvirkni kynslóð: Bash, Python og PowerShell

Hagnaður:

  • Hæfni til að skilja styrkleika Bash, Python og PowerShell og láta gervigreind framleiða örugg, vernduð handritsdrög
  • Geta til að bæta varnarlistum við forskriftir eins og set -euo pipefail, tóma breytuskoðun, þurrkeyrsluham og skógarhögg
  • Hæfni til að lesa eyðileggjandi skipanir og prófa þær í einangruðu umhverfi og með þurrkeyrslu fyrst og beita þeim aga að fella ekki leyndarmálið inn í handritið.

Andi DevOps er dregið saman í einni setningu: „Gerðu sjálfvirkan vinnu sem þú gerir tvisvar. Öll endurtekin verkefni sem eru unnin handvirkt - hreinsun annála, taka öryggisafrit, heilsufarsskoðun netþjóns, vinnsla hópskráa - tekur tíma og verða að lokum skemmd af mannlegum mistökum. Forskriftir taka yfir þessi störf: lítil forrit sem framkvæma röð skipana í röð, áreiðanlegan og endurtekinn hátt. DevOps fagmaðurinn notar oft þrjú tungumál: Bash (fyrir Linux/Unix skelforskriftir), Python (fyrir flókna rökfræði, API-kall, gagnavinnslu) og PowerShell (fyrir Windows og skýjastjórnun).

Gervigreind er ef til vill þar sem það býður upp á hagnýtasta gildi í handritsgerð: að búa til vinnuuppkast úr lýsingu í einni setningu, leysa dularfulla villu, þýða handrit á annað tungumál. En handrit er hættulegt þegar það er keyrt í blindni - rangt rm, Remove-Item -Recurse mun eyða skrám óafturkræft. Þess vegna er einkunnarorð þessarar einingar: Láttu gervigreindina skrifa handritið, þú lest það, reyndu það fyrst í öruggri stillingu, keyrðu það síðan.

Hvaða tungumál á að velja og hvenær? Gróf þumalputtaregla: ef starfið felst í því að keyra nokkrar kerfisskipanir í röð (afrita skrá, endurræsa þjónustu, sækja skjalasafn) er Bash eðlilegasti kosturinn vegna þess að Linux er alls staðar nálægur á netþjónum. Ef starfið felur í sér ákvörðunarrökfræði, lykkju, gagnaumbreytingu, beiðni um API eða JSON vinnslu – það er rökfræði sem fer yfir 20 línur – sker Python sig úr fyrir læsileika og ríkuleg bókasöfn; Flókið Bash handrit verður fljótt óskiljanlegt á meðan Python er áfram auðvelt að viðhalda. Ef starfið felur í sér stjórnun Windows netþjóna, Active Directory eða Azure, þá er PowerShell hið náttúrulega umhverfi vegna þess að hlutbundið eðli þess fellur djúpt að þessum kerfum. Að tilgreina hvaða tungumál þú valdir og hvers vegna þegar þú biður um handrit til gervigreindar tryggir að úttakið sé viðeigandi og orðrænt fyrir umhverfið þitt.

Skref fyrir skref: örugg forskriftagerð

  1. Lýstu verkefninu og umhverfinu. Hvað mun það gera, hvaða stýrikerfi/skel, hvaða takmarkanir?
  2. Biðjið um öryggishandrið. Í bash, stilltu -euo pipefail (stöðva við villu, hætta við óskilgreinda breytu), staðfestingarbeiðni fyrir hættulegar aðgerðir, færðu fyrst í stað þess að eyða.
  3. Biðja um þurrkunarham. Láttu handritið skrifa hvað á að gera við --dry-run, en ekki gera það.
  4. Lestu og skildu. Staðfestu hvað hver röð gerir, sérstaklega að eyða/færa/netkerfi.
  5. Prófaðu það í einangruðu umhverfi. Í prófunarmöppunni skaltu keyra hana með sýnishornsgögnum.
  6. Bæta við skráningu. Leyfðu handritinu að skrá hvað það gerir svo hægt sé að skoða það síðar.

Grunnatriði öruggrar forskriftar

Framleiðsluhandrit ætti að innihalda þessar handriðir:

  • Stöðva ef villur koma upp. Bash: setja -euo pipefail. PowerShell: $ErrorActionPreference = 'Stöðva'. Ef eitt skref mistekst ættu þau næsta ekki að virka.
  • Idempotency (endurtekningarhæfni). Ef handritið keyrir tvisvar ætti það ekki að valda tvöföldum skaða; „Ef þú átt það nú þegar, slepptu því“ rökfræði.
  • Samþykki og þurrkeyrsla. Fyrir eyðileggjandi aðgerðir "ertu viss?" eða --dry-run fánann.
  • Inntaksstaðfesting. Eru breyturnar eins og búist var við? Tóm breyta getur breytt rm -rf „$DIR“/ í rm -rf / disaster.
  • Skógarhögg. Skrá yfir hvað var gert og hvenær.
Ábending: Hættulegustu mistökin í Bash er að eyða með tómri breytu. rm -rf "$DIR" reynir að eyða rótarskránni ef $DIR er tómt. setja -u (stöðva á óskilgreindri breytu) og haka við [ -n "$DIR" ] áður en þú eyðir er björgunaraðgerð. Biddu beinlínis um þessar vernd þegar þú biður um forskriftir frá gervigreindinni.

Öryggi: leyndarmál og eyðileggjandi skipanir

Tvær stórar hættur:

  1. Að fella leyndarmálið inn í handritið. Lykilorðið má ekki vera látlaus texti í táknskriftinni; Verður að lesa úr umhverfisbreytu eða hvelfingu. Forskriftir fara inn í Git; grafið leyndarmál er varanlegur leki.
  2. Eyðileggjandi skipanir. rm -rf, Remove-Item -Recurse -Force, DROP TABLE, terraform destroy — þegar þú sérð þetta í handriti skaltu stoppa og hugsa þig tvisvar um. Reyndu aldrei eyðileggjandi skipunina sem myndast af gervigreindinni í framleiðslu fyrst.
Varúð: Þegar þú segir gervigreindinni að „skrifa handrit sem hreinsar þessar skrár“ skaltu lesa vandlega umfang finna ... -delete eða rm skipunarinnar sem hún framleiðir. Jokertákn (*) eða röng slóð eyðir fleirum en þú vilt eyða. Keyrðu alltaf skriftuna fyrst með „listi til að eyða“ ham í stað þess að eyða.

Samanburður á þremur tungumálum

viðmiðun

bash

Python

PowerShell

Þar sem það er best

Linux skel, stjórn keðja

Flókin rökfræði, API, gögn

Windows skýjastjórnun

Námsferill

Miðlungs (fastur)

auðvelt

miðlungs

Villumeðferð

setja -euo pipefail

reyna/nema

try/catch, -ErrorAction

flytjanleika

Unix/Linux/mac

alls staðar

Þverpalla (PS 7+)

hvenær

Stutt, kerfið virkar

Rökfræði lengri en 20 línur

Windows/AD/Azure

þrjú smámál

Tilfelli 1 — 2 klukkustundir af föndri í 5 mínútur. Verkfræðingur eyddi 2 klukkustundum í að safna og geyma annála frá 40 netþjónum í hverri viku. Hann lét gervigreindina lýsa verkefninu og setja -euo pipefail + dry-run vörn og búa til Bash handrit. Staðfesti fyrst handritið með dry-run, tengdi það síðan við áætlaða verkefnið (cron). Vikuleg vinna minnkar í 5 mínútur og mannleg mistök eytt.

Tilfelli 2 — núllbreytilegt hörmung afstýrt. Það var rm -rf „$TARGET“/* í hreinsunarforskriftinni sem gervigreindin framleiddi, en ef TARGET var ekki úthlutað einhvers staðar, var það tómt. Hann áttaði sig á þessu við nám sem verkfræðingur; setja -u og [ -n "$TARGET" ] || bætt við útgangi 1 stjórn. Meðan á prófun stóð var breytan ógild og handritið stöðvaðist örugglega frekar en skelfilega.

Tilfelli 3 — innfelldur tákn tekinn. Til hægðarauka hefur gervigreind bætt við TOKEN = "ghp_realtoken" línu við Python skriftu sem biður um API (sem dæmi). Verkfræðingurinn fjarlægði þetta og breytti því í að lesa úr umhverfisbreytunni með os.environ["TOKEN"] og hætti við og endurnýjaði táknið. Ef handritið færi til Git væri táknið opinbert.

Fjögur afritanleg sniðmát

1) Öruggt Bash handrit:

Skrifaðu Bash handrit: [TASK]. Lögboðnar reglur:- `setja -euo pipefail` í upphafi.- Athugaðu að breytan sé ekki tóm hvar sem þú eyðir/hreyfir.- `--dry-run` flaggi: skrifaðu hvað á að gera í þessum ham en ekki gera það.- Ekki fella leyndarmálið inn; Lesið úr umhverfisbreytu. - Prentaðu upplýsandi annál í hverju skrefi. Athugaðu handritið og merktu við hættulegustu línuna.

2) Forskriftarlýsing/stýring:

Lýstu eftirfarandi skriftu línu fyrir línu og athugaðu hvort öryggi sé: innbyggt leyndarmál, eyðileggjandi skipun (rm/Remove-Item/DROP), ógilt inntak, skortur á villumeðferð? Skrifaðu hverja áhættu í röð eftir mikilvægi og leiðréttingu. Handrit: [CODE]

3) Tungumálaþýðing:

Þýddu þetta [SOURCE LANGUAGE] handrit yfir á [TARGET LANGUAGE]. Haltu hegðuninni orðrétt, notaðu orðræna villumeðferð á markmálinu, færðu innbyggð leyndarmál yfir í umhverfisbreytu. Athugaðu punkta sem geta hegðað sér öðruvísi. Handrit: [CODE]

4) Fyrirhugað verkefni (cron/áætlað verkefni):

Notaðu þetta handrit [FREQUENCY: t.d. Skrifaðu áætlunarskilgreiningu ([cron / systemd timer / Windows Task Scheduler]) sem mun keyra [kl. 02:00 á hverju kvöldi]. Bættu við hvernig á að vara mig við bilun (skráning/útgöngukóði/tilkynning) og hvernig á að koma í veg fyrir skörun.

Veik kvaðning / Sterk kvaðning

Veik: "Skrifaðu handrit sem eyðir gömlum skrám."

Niðurstaða: umfangslaust, óvarið, þurrt keyrt rm handrit; Ef það keyrir í rangri möppu mun það eyða óafturkræft.

Strong: "Skrifaðu bash skriftu til að eyða .log skrám eldri en 30 daga undir /var/log/app. Notaðu set -euo pipefail, hættu ef markskráin er tóm, skráðu það sem á að eyða með --dry-run fyrst, skráðu allar færslur, ekki fella inn leyndarmálið. Merktu hættulegasta línuna."

Mismunur: önnur krafan gefur allt svigrúm, öryggisgrind og væntingar til þurrhlaups; Hægt er að keyra úttakið á öruggan hátt.

Algeng mistök

  • Keyrir handritið án þess að lesa það. Eyða/færa línur sérstaklega leiða til hörmunga.
  • Er ekki að leita að tómum breytum. Klassísk hörmung að eyða rótarskránni með rm -rf "$X"/.
  • slepptu `set -euo pipefail` / `-ErrorAction Stop`. Skref kviknar, handritið heldur áfram í blindni.
  • Að fella leyndarmálið inn í handritið. Viðvarandi leki til Git.
  • Eyðileggjandi ferli án þurrkunar. Fyrst „sýndu mér hvað ég á að gera“, gerðu það svo.
  • Er að gera fyrstu tilraun í framleiðslu. Að keyra án einangraðs prófunarumhverfis.

Í stuttu máli

DevOps er list sjálfvirkni; Endurtekinni vinnu er úthlutað til Bash, Python og PowerShell forskrifta. AI er mjög handlaginn við að semja forskriftir, villuleit og þýða tungumál - en öruggt handrit ætti að innihalda villuvörn eins og set -euo pipefail, núllbreytuathugun, þurrkeyrsluham, innbyggt leyndarleysi og skógarhögg. Það er á þína ábyrgð að lesa og prófa hvert handrit, sérstaklega þau sem innihalda eyðileggjandi skipanir, í einangruðu umhverfi og þurrkunar fyrst.

Umsóknarverkefni

Veldu endurtekið verkefni (skrá geymslu, öryggisafrit, hreinsun). (1) Láttu gervigreindina búa til varið handrit með „Secure Bash script“ sniðmátinu. (2) Láttu athuga sama handritið með tilliti til öryggis og "Script description/audit" sniðmátið og finndu hættulegustu línuna sem gervigreindin hefur flaggað. (3) Staðfestu hegðun þess með því að keyra handritið með sýnishornsskrám í prófamöppu, fyrst með --dry-run.

gátlisti

  • [ ] Ég skrifaði verkefnið sem ég vil ekki, stýrikerfi/skel og öryggisgrind.
  • [ ] Forskriftin hefur villu við að stoppa eins og set -euo pipefail / -ErrorAction Stop.
  • [ ] Ég bætti við tómri breytu og innsláttarathugun fyrir eyðingu/færslu.
  • [ ] Það er --dry-run/staðfestingarkerfi fyrir eyðileggjandi aðgerðir.
  • [ ] Það er ekkert leyndarmál innbyggt í handritið; gildin koma frá umhverfisbreytunni/tilvikinu.
  • [ ] Ég gerði fyrstu prófunina í einangruðu prófunarumhverfi með þurrhlaupi.