Awọn anfani:
- Agbara lati loye awọn agbara ti Bash, Python ati PowerShell ati ni oye atọwọda gbejade ailewu, awọn iwe afọwọkọ ti o ni aabo
- Agbara lati ṣafikun awọn ọna aabo si awọn iwe afọwọkọ gẹgẹbi ṣeto -euo pipefail, iṣayẹwo oniyipada ofo, ipo ṣiṣe-gbẹ ati gedu
- Agbara lati ka awọn aṣẹ iparun ati gbiyanju wọn ni agbegbe ti o ya sọtọ ati pẹlu ṣiṣe gbigbẹ ni akọkọ, ati lati lo ibawi ti kii ṣe ifibọ aṣiri ninu iwe afọwọkọ naa.
Ẹmi DevOps jẹ akopọ ni gbolohun kan: “Ṣiṣe adaṣe iṣẹ ti o ṣe lẹẹmeji.” Eyikeyi iṣẹ-ṣiṣe ti atunwi ti o ṣe pẹlu ọwọ - afọmọ log, gbigba afẹyinti, ṣayẹwo ilera olupin, sisẹ faili ipele - gba akoko ati bajẹ nipasẹ aṣiṣe eniyan. Awọn iwe afọwọkọ gba awọn iṣẹ wọnyi: awọn eto kekere ti o ṣiṣẹ lẹsẹsẹ awọn aṣẹ ni ọna ti o tẹle, igbẹkẹle ati atunṣe. Ọjọgbọn DevOps nigbagbogbo nlo awọn ede mẹta: Bash (fun awọn iwe afọwọkọ ikarahun Linux/Unix), Python (fun ọgbọn idiju, pipe API, ifọwọyi data), ati PowerShell (fun Windows ati iṣakoso awọsanma).
AI jẹ boya nibiti o ti nfunni ni iye ti o wulo julọ ni iran iwe afọwọkọ: ṣiṣe agbejade iṣẹ ṣiṣe lati apejuwe gbolohun kan, yanju kokoro aramada, itumọ iwe afọwọkọ sinu ede miiran. Ṣugbọn iwe afọwọkọ kan lewu nigbati o ba n ṣiṣẹ ni afọju - rm ti ko tọ, Yọ-Nkan kan -Recurse yoo pa awọn faili rẹ lainidi. Ti o ni idi ti gbolohun ọrọ ti ẹyọ yii jẹ: Jẹ ki AI kọ iwe afọwọkọ, o ka, gbiyanju ni ipo ailewu ni akọkọ, lẹhinna ṣiṣẹ.
Ede wo ni lati yan ati nigbawo? Ofin atanpako ti o ni inira: ti iṣẹ naa ba ni ṣiṣe ọpọlọpọ awọn aṣẹ eto ni ọna kan (faili daakọ, iṣẹ tun bẹrẹ, igbasilẹ igbasilẹ) Bash jẹ yiyan adayeba julọ nitori Linux wa ni ibi gbogbo lori awọn olupin. Ti iṣẹ naa ba pẹlu ọgbọn ipinnu, looping, iyipada data, nbere API, tabi sisẹ JSON — iyẹn ni, ọgbọn ti o kọja awọn laini 20 —Python duro jade fun kika ati awọn ile-ikawe ọlọrọ; Iwe afọwọkọ Bash eka kan yarayara di aimọye, lakoko ti Python wa rọrun lati ṣetọju. Ti iṣẹ naa ba jẹ ṣiṣakoso awọn olupin Windows, Active Directory, tabi Azure, PowerShell jẹ agbegbe adayeba nitori ẹda ti o da lori ohun kan ṣepọ jinna pẹlu awọn iru ẹrọ wọnyi. Ni pato ede ti o yan ati idi ti nigba ti o beere iwe afọwọkọ kan si AI ṣe idaniloju pe abajade jẹ deede ati idiomatic fun agbegbe rẹ.
Igbesẹ nipa igbese: iran iwe afọwọkọ to ni aabo
- Ṣe apejuwe iṣẹ-ṣiṣe ati ayika. Kini yoo ṣe, kini OS / ikarahun, kini awọn idiwọ?
- Beere fun ailewu afowodimu. Ni bash, ṣeto -euo pipefail (duro lori aṣiṣe, da duro lori oniyipada aisọye), itọsi idaniloju fun awọn iṣẹ ṣiṣe ti o lewu, gbe ni akọkọ dipo piparẹ.
- Beere ipo ṣiṣe-gbẹ. Jẹ ki iwe afọwọkọ kọ kini lati ṣe pẹlu --gbẹ-run, ṣugbọn maṣe ṣe.
- Ka ati oye. Daju ohun ti ọna kọọkan ṣe, paapaa paarẹ / gbe / awọn iṣẹ nẹtiwọọki.
- Gbiyanju rẹ ni agbegbe ti o ya sọtọ. Ninu folda idanwo, ṣiṣẹ pẹlu data ayẹwo.
- Fi kun si wíwọlé. Jẹ ki iwe afọwọkọ ṣe igbasilẹ ohun ti o ṣe ki o le ṣee wo nigbamii.
Awọn ibaraẹnisọrọ ti ailewu iwe afọwọkọ
Iwe afọwọkọ iṣelọpọ yẹ ki o pẹlu awọn ọna iṣọ wọnyi:
- Iduro ni irú ti aṣiṣe. Bash: ṣeto -euo pipefail. PowerShell: $ErrorActionPreference = 'Duro'. Ti igbesẹ kan ba kuna, awọn atẹle ko yẹ ki o ṣiṣẹ.
- Idempotency (repeatability). Ti o ba ti akosile gbalaye lemeji, o yẹ ki o ko mu ė bibajẹ; "Ti o ba ti ni tẹlẹ, foju rẹ" ọgbọn.
- Alakosile ati ki o gbẹ-run. Fun awọn iṣẹ apanirun "Ṣe o da ọ loju?" tabi asia --gbẹ-run.
- Ifọwọsi igbewọle. Ṣe awọn paramita bi o ti ṣe yẹ? Oniyipada ofo le yi rm -rf "$ DIR"/ sinu rm -rf / ajalu.
- wíwọlé. Ṣe igbasilẹ ohun ti a ṣe ati nigbawo.
Imọran: Aṣiṣe ti o lewu julọ ni Bash ni piparẹ pẹlu oniyipada ofo. rm -rf "$DIR" gbìyànjú lati pa eto-ipamọ root rẹ ti $DIR ba ṣofo. ṣeto -u (duro lori oniyipada aipin) ati ṣiṣe ayẹwo [-n "$ DIR"] ṣaaju piparẹ jẹ igbala. Ni kedere beere awọn aabo wọnyi nigbati o ba n beere awọn iwe afọwọkọ lati AI.
Aabo: asiri ati awọn ofin iparun
Awọn ewu nla meji:
- Ifisinu Asiri sinu akosile. Ọrọigbaniwọle ko gbọdọ jẹ ọrọ ti o han gbangba laarin iwe afọwọkọ ami; Gbọdọ wa ni kika lati oniyipada ayika tabi ifinkan. Awọn iwe afọwọkọ lọ sinu Git; sin ikoko ni yẹ jo.
- Awọn aṣẹ iparun. rm -rf, Yọ-Nkan -Recurse -Force, DROP TABLE, terraform run - nigbati o ba ri awọn wọnyi ni a akosile, da ati ki o ro lemeji. Maṣe gbiyanju aṣẹ iparun ti ipilẹṣẹ nipasẹ AI ni prod akọkọ.
Išọra: Nigbati o ba sọ fun AI lati “kọ iwe afọwọkọ kan ti o wẹ awọn faili wọnyi mọ”, farabalẹ ka ipari ti wiwa… -parẹ tabi aṣẹ rm ti o ṣe. Kaadi egan (*) tabi ọna ti ko tọ yoo pa diẹ sii ju ti o fẹ paarẹ. Nigbagbogbo ṣiṣe awọn akosile akọkọ pẹlu "akojọ lati pa" mode dipo ti piparẹ.
Ifiwera ti awọn ede mẹta
àwárí mu
bash
Python
PowerShell
Nibo ni o dara julọ
Linux ikarahun, pipaṣẹ pq
Eka kannaa, API, data
Windows awọsanma isakoso
Eko eko
Alabọde (ni idẹkùn)
rorun
alabọde
Mimu aṣiṣe
ṣeto -euo pipefail
gbiyanju / ayafi
gbiyanju / apeja, -ErrorAction
gbigbe
Unix/Linux/mac
nibi gbogbo
Agbelebu-Syeed (PS 7+)
nigbawo
Kukuru, eto ṣiṣẹ
Kannaa to gun ju 20 ila
Windows / AD / Azure
mẹta mini igba
Ọran 1 - 2 wakati ti iṣẹ ọwọ sinu iṣẹju 5. Onimọ-ẹrọ kan n lo awọn wakati 2 gbigba ati fifipamọ awọn akọọlẹ lati awọn olupin 40 ni gbogbo ọsẹ. O ni AI ṣe apejuwe iṣẹ-ṣiṣe naa ati ṣeto -euo pipefail + awọn aabo ṣiṣe-gbẹ ati ṣe agbekalẹ iwe afọwọkọ Bash kan. Ni akọkọ ti fọwọsi iwe afọwọkọ pẹlu ṣiṣe-gbẹ, lẹhinna sopọ mọ iṣẹ-ṣiṣe ti a ṣeto (cron). Iṣẹ osẹ ti dinku si awọn iṣẹju 5 ati pe a ti yọ aṣiṣe eniyan kuro.
Irú 2 - ajalu oniyipada asan diwo. rm -rf "$TARGET"/* wa ninu iwe afọwọkọ mimọ ti AI ṣe, ṣugbọn ti a ko ba yan TARGET ni ibikan, o wa sofo. Ó mọ èyí nígbà tó ń kẹ́kọ̀ọ́ gẹ́gẹ́ bí ẹlẹ́rọ̀; ṣeto -u ati [-n "$TARGET"] || kun ijade 1 Iṣakoso. Lakoko idanwo oniyipada naa jẹ asan ati pe iwe afọwọkọ duro lailewu kuku ju ajalu lọ.
Irú 3 - ifibọ àmi sile. Fun irọrun, AI ti ṣafikun laini TOKEN = “ghp_realtoken” si iwe afọwọkọ Python kan ti o beere API (gẹgẹbi apẹẹrẹ). Ẹlẹrọ naa yọ eyi kuro o si yipada si kika lati inu oniyipada ayika pẹlu os.environ["TOKEN"] o si fagilee ati tunse aami naa. Ti iwe afọwọkọ naa ba lọ si Git, ami naa yoo jẹ ti gbogbo eniyan.
Mẹrin daakọ awọn awoṣe
1) Afọwọkọ Bash to ni aabo:
Kọ iwe afọwọkọ Bash kan: [TASK]. Awọn ofin dandan: - `set -euo pipefail` ni ibẹrẹ - Ṣayẹwo pe oniyipada ko ṣofo nibikibi ti o ba nparẹ / gbigbe. Ka lati oniyipada ayika. - Tẹjade iwe alaye ni igbesẹ kọọkan. Ọrọìwòye iwe afọwọkọ ati samisi laini ti o lewu julọ.
2) Apejuwe / iṣakoso iwe afọwọkọ:
Ṣe apejuwe laini iwe afọwọkọ wọnyi nipasẹ laini ati ṣayẹwo fun aabo: aṣiri ifibọ, aṣẹ iparun (rm/Yọ-Nkan kan/DROP), titẹ sii ti ko wulo, aini mimu aṣiṣe? Kọ ewu kọọkan ni aṣẹ pataki ati atunṣe. Akosile: [CODE]
3) Itumọ ede:
Tumọ iwe afọwọkọ yẹn [LANGUAGE LANGUAGE] si [LANGUAGE ÀWỌN ỌMỌDE]. Jeki ihuwasi naa ni otitọ, lo mimu aṣiṣe idiomatic ti ede ibi-afẹde, gbe eyikeyi awọn aṣiri ti a fi sii si oniyipada ayika. Akiyesi awọn ojuami ti o le huwa otooto.Script: [CODE]
4) Iṣẹ ṣiṣe ti a gbero (cron/iṣẹ ti a ṣeto):
Lo yi akosile [FREQUENCY: f.eks. Kọ asọye iṣeto kan ([cron / systemd time / Windows Task Scheduler]) ti yoo ṣiṣẹ [ni 02:00 ni gbogbo oru]. Ṣafikun bii o ṣe le kilọ fun mi lori ikuna (iwọle / koodu ijade / iwifunni) ati bii o ṣe le ṣe idiwọ ikọlu.
Ailagbara kiakia / Alagbara kiakia
Alailagbara: "Kọ iwe afọwọkọ ti o npa awọn faili atijọ rẹ."
Abajade: ailopin, ti ko ni aabo, iwe afọwọkọ rm ti ko gbẹ-runless; Ti o ba ṣiṣẹ ninu folda ti ko tọ, yoo parẹ lainidi.
Alagbara: "Kọ iwe afọwọkọ bash lati paarẹ awọn faili .log ti o dagba ju awọn ọjọ 30 labẹ / var/log/app. Lo set-euo pipefail, da duro ti itọsọna ibi-afẹde ba ṣofo, ṣe atokọ kini lati paarẹ pẹlu --gbẹ-ṣiṣe akọkọ, wọle gbogbo idunadura, maṣe fi sii asiri. Samisi laini ti o lewu julọ. ”
Iyatọ: ẹtọ keji yoo fun aaye ni kikun, awọn ẹṣọ aabo ati ireti ṣiṣe-gbẹ; Ijade le ṣee ṣiṣẹ lailewu.
Awọn aṣiṣe ti o wọpọ
- Ṣiṣe awọn iwe afọwọkọ lai kika rẹ. Paarẹ/yi awọn ori ila ni pato yorisi ajalu.
- Ko ṣayẹwo fun awọn oniyipada ofo. Ajalu Alailẹgbẹ ti piparẹ ilana ilana gbongbo pẹlu rm -rf "$ X"/.
- foo `set -euo pipefail` / `-ErrorAction Stop`. A igbese ina, awọn akosile tẹsiwaju afọju.
- Ifisinu Asiri sinu akosile. jo leralera si Git.
- Ilana iparun laisi ṣiṣe-gbẹ. Ni akọkọ "fi han mi kini lati ṣe", lẹhinna ṣe.
- Ṣiṣe igbiyanju akọkọ ni prod. Nṣiṣẹ laisi agbegbe idanwo ti o ya sọtọ.
Ni soki
DevOps jẹ aworan ti adaṣe; Iṣẹ atunṣe jẹ aṣoju si Bash, Python ati awọn iwe afọwọkọ PowerShell. AI wa ni ọwọ pupọ ni kikọ awọn iwe afọwọkọ, n ṣatunṣe aṣiṣe, ati itumọ awọn ede — ṣugbọn iwe afọwọkọ to ni aabo yẹ ki o pẹlu awọn oluṣọ aṣiṣe bii ṣeto -euo pipefail, iṣayẹwo oniyipada asan, ipo ṣiṣe gbigbẹ, aṣiri ifibọ, ati gedu. O jẹ ojuṣe rẹ lati ka ati idanwo iwe afọwọkọ kọọkan, paapaa awọn ti o ni awọn aṣẹ iparun ninu, ni agbegbe ti o ya sọtọ ati ṣiṣe gbigbẹ ni akọkọ.
Ohun elo iṣẹ-ṣiṣe
Yan iṣẹ-ṣiṣe loorekoore (igbasilẹ igbasilẹ, afẹyinti, mimọ). (1) Ṣe AI ṣe agbekalẹ iwe afọwọkọ ti o ni aabo pẹlu awoṣe “afọwọkọ Bash aabo”. (2) Ṣe ayẹwo iwe afọwọkọ kanna fun aabo bi awoṣe “apejuwe Akosile/ayẹwo” ki o wa laini ti o lewu julọ ti AI ti ṣe afihan. (3) Ṣe idaniloju ihuwasi rẹ nipa ṣiṣe iwe afọwọkọ pẹlu awọn faili ayẹwo ni folda idanwo, akọkọ pẹlu --gbẹ-run.
akojọ ayẹwo
- [] Mo ti kowe iṣẹ-ṣiṣe ti Emi ko fẹ, OS/ikarahun ati aabo guardrails.
- [] Iwe afọwọkọ naa ni aṣiṣe idaduro bi ṣeto -euo pipefail / -ErrorAction Stop.
- [] Mo ṣafikun oniyipada ofo ati ṣayẹwo iṣagbewọle ṣaaju piparẹ/ gbe.
- [] Ilana-gbigbẹ-ṣiṣe/ṣiṣe idaniloju wa fun awọn iṣẹ apanirun.
- [] Ko si ikoko ti a fi sinu iwe afọwọkọ; awọn iye wa lati agbegbe oniyipada / irú.
- [] Mo ṣe idanwo akọkọ ni agbegbe idanwo ti o ya sọtọ pẹlu ṣiṣe-gbẹ.