Kitengo 2 / 11

Hati za Kiotomatiki: Inazalisha Bash, PowerShell, na Python kwa Usalama

Faida:

  • Uwezo wa kutengeneza maandishi ya otomatiki ya Bash, PowerShell na Python na vizuizi wazi na njia za usalama na akili ya bandia.
  • Uwezo wa kuongeza kanuni kama vile kutokuwa na uwezo, kukauka, kushughulikia makosa na kurudisha nyuma kwa kila hati na kutumia mzunguko wa 'tengeneza, ngumu, thibitisha'
  • Uwezo wa kuelewa kwamba utekelezaji wa script zinazozalishwa haimaanishi kuwa ni salama na kupata tabia ya kuchukua jukumu kwa kusoma na kupima mistari ya uharibifu.

Hati za Uendeshaji: Inazalisha Bash, PowerShell na Python kwa Usalama na AI

Adui mbaya zaidi ya msimamizi wa mfumo ni kazi ya mwongozo ya kurudia: kuunganisha kwa kila mashine na kusafisha magogo, kufungua mtumiaji sawa kwenye seva ishirini, kuendesha hundi sawa ya afya kila asubuhi. Kurudia huku ni wazi kwa wakati na makosa ya kibinadamu. Hati ya otomatiki ni programu ndogo ambayo hukabidhi marudio haya kwa kompyuta - mara nyingi huandikwa kwa Bash (lugha ya amri ya ganda) katika ulimwengu wa Linux, PowerShell (ganda la otomatiki la Microsoft) katika ulimwengu wa Windows, na Python kwa kazi inayojitegemea. AI ina haraka sana katika kutoa, kufafanua na kuboresha rasimu ya kwanza ya hati hizi. Lakini maandishi sio maandishi, ni nguvu inayofanya kazi katika mfumo wako; Tofauti na fomula ya Excel, ikiwa si sahihi, inafuta faili, inasimamisha huduma, na inakata ufikiaji. Ndio maana ahadi ya kitengo hiki ni: AI inaandika hati, unaisoma, itajaribu na kuiendesha kwa kuwajibika.

Katika kitengo hiki, utajifunza jinsi ya kutengeneza hati salama, zinazosomeka na zinazoweza kurejeshwa kwa kutumia AI; Kanuni za kuokoa maisha kama vile kutokuwa na uwezo (kuendesha hati sawa mara mbili hakusababishi uharibifu) na kukauka; na utajifunza ukaguzi ambao hati lazima ipitie kabla ya kuiweka katika uzalishaji.

Kwa nini uandishi wa AI una nguvu sana?

Hata msimamizi mwenye uzoefu anaweza asijue sintaksia halisi ya kitanzi cha Bash, vigezo vya PowerShell cmdlet (amri), au jaribio la Python/isipokuwa kizuizi kwa moyo. AI inajaza pengo hili papo hapo: unaelezea dhamira kwa Kituruki wazi, na hutoa muhtasari wa kufanya kazi. Zaidi ya hayo, unaweza kutoa hati iliyopo kwa AI na kusema "eleza hili", "ongeza kushughulikia makosa", "ifanye isomeke zaidi". Hii inafupisha mkondo wa kujifunza na kuleta washiriki wa timu ya chini kwa kasi.

Lakini pamoja na nguvu huja wajibu. Mara nyingi, maandishi yanayotokana na AI huandika "njia ya furaha" kwa usahihi (ikiwa yote ni sawa); lakini inaweza kukosa kesi za makali (faili haipo, diski imejaa, mtandao chini) au kufanya mawazo hatari. Kwa hivyo fikiria utengenezaji wa maandishi na AI katika hatua tatu: toa, gumu, thibitisha.

Hatua kwa hatua: kutengeneza hati salama

  1. Andika nia na kizuizi kwa uwazi. Ni mfumo gani wa uendeshaji, toleo gani la ganda, ni njia gani za faili, ni haki gani? Kama "Ubuntu 22.04, Bash 5, sudo sio mizizi, inaendeshwa tu chini ya /opt/app/logs". Mahitaji yasiyoeleweka hutoa dhana hatari.
  2. Uliza reli za usalama. Inahitaji hati "kuacha kushindwa" (set -euo pipefail katika Bash), upesi ili uthibitishe utendakazi wa uharibifu, kuhifadhi nakala kabla ya operesheni, na hali ya kukauka. Njia hizi za ulinzi hukamata makali inasema kwamba AI hupita.
  3. Andika wasio na uwezo. Hati haipaswi kusababisha makosa au uharibifu wowote inapoendeshwa mara ya pili. Anzisha mantiki ya "ruka ikiwa mtumiaji tayari yupo", "unda saraka ikiwa haipo, usiiguse ikiwa iko". Hii inaruhusu otomatiki kufanya kazi kwa usalama tena na tena.
  4. Soma na uelewe. Soma kila mstari uliotolewa. Uliza AI kuashiria amri za uharibifu (rm, Ondoa-Kipengee, DROP) tofauti.
  5. Mtihani kwa kukausha-kukimbia. Kwanza, iendeshe katika hali ya "kuwaambia nini cha kufanya" badala ya shughuli halisi. Ikiwa matokeo ndiyo unayotarajia, badilisha hadi hali halisi - na kwenye mashine ya majaribio kwanza.
  6. Tayarisha kurudi kwako. Je, hati huchukua chelezo? Je! unajua jinsi ya kurejesha nakala rudufu? Je, kuna ukataji miti, unaweza kuona inachofanya baadaye?
Kidokezo: Kila hati ya kiharibifu ijumuishe DRY_RUN=kigeu cha kweli na --apply bendera. Tabia ya chaguo-msingi ni kuandika kitakachotokea bila kufuta chochote; Acha ufutaji halisi ufanye kazi tu ikiwa --apply imetolewa kwa uwazi. Tabia hii moja huzuia majanga ya muda mrefu wa kazi.

kesi tatu ndogo

Kesi ya 1 - Upungufu umehifadhiwa kwa saa 3. Msimamizi aliandika hati ambayo ilisakinisha wakala sawa wa ufuatiliaji kwenye seva 25. Toleo la kwanza halikuwa la ujinga: lilivunja usanidi wakati wa kukimbia kwa pili ikiwa wakala alikuwa tayari amesakinishwa. Mhandisi alikuwa na AI ya kuongeza "angalia ikiwa imewekwa, iruke ikiwa ni" mantiki. Wakati wa dirisha lililofuata la urekebishaji hati ilianzisha kwa bahati mbaya mara mbili lakini haikudhuru. Idempotency ilifanya urejeshaji wa seva 25 kuwa wa lazima.

Kesi ya 2 - Dry-run imehifadhi saraka ya mizizi. Timu moja ilipokea hati ya Bash ambayo iliondoa nakala rudufu za zamani. Ikiwa utofauti ulikuwa tupu, njia ikawa / badala ya /chelezo/ - hatari ya kawaida. Mhandisi aliiendesha kwa mara ya kwanza katika hali ya DRY_RUN, aliganda alipoona mstari unaofanana na rm -rf / katika pato, na akaongeza hundi inayobadilika (: "${BACKUP_DIR:? cannot be empty}"). Kukimbia kukauka kulipata mdudu ambao ungefuta diski nzima kabla haijaanza kutengenezwa.

Kesi ya 3 - Udhibiti wa hitilafu uliizuia kuamka usiku mmoja. Hati ya PowerShell ilikuwa ikihifadhi kumbukumbu wakati diski ilikuwa imejaa. Toleo la kwanza lingeshindwa kimya ikiwa ushiriki wa mtandao haukuweza kufikiwa na kuendelea kujaza diski. "Thibitisha mafanikio katika kila hatua, ikiwa haujafaulu, arifu barua pepe na usimamishe" iliongezwa kwa AI. Baada ya wiki, chapisho lilivunjwa; Nakala ilisimama na kuonya, diski haikujaa, hakuna mtu aliyeamka saa 3 asubuhi.

Violezo vinne vinavyoweza kunakiliwa

1) Salama kizazi cha hati ya Bash:

Jukumu lako: mhandisi mkuu wa mitambo ya Linux. Andika hati ya Ubuntu 22.04 / Bash 5. Kusudi:[kusudi]. Kanuni:- Anza na "set -euo pipefail".- Thibitisha vigeu vinavyohitajika kwa ": ${VAR:?}".- Tekeleza utendakazi wa uharibifu kwa chaguo-msingi DRY_RUN=kweli; Acha programu halisi iendeshe tu na --apply bendera. - Ingia kila hatua kwa stdout, acha na ujumbe wa maana juu ya makosa. - Ifanye kuwa isiyo na uwezo (ili isisababisha uharibifu kwenye kukimbia kwa pili). Kisha: weka alama kwenye mistari inayoweza kuharibu kando na uandike kesi 3 ambazo ninahitaji kujaribu kabla ya utengenezaji.

2) Kuimarisha hati iliyopo:

Fanya hati ifuatayo iwe tayari kwa utayarishaji: (1) ongeza ushughulikiaji na ukataji wa hitilafu, (2) ifanye isiwe na maana, (3) weka amri za uharibifu nyuma ya kukausha, (4) toa njia zilizo na msimbo ngumu na siri za kutofautisha. Eleza kwa ufupi kila mstari uliobadilisha na kwa nini. Hati: [script]

3) Otomatiki salama ya PowerShell:

Jukumu lako: Mtaalam wa otomatiki wa Windows. Andika hati inayolingana ya PowerShell 5.1. Kusudi: [kusudi]. Kanuni:- Anza na "$ErrorActionPreference = 'Stop'".- Ongeza -WhatIf msaada kwa destructor cmdlets (chaguo-msingi WhatIf).- Funga kila kitendo kwa kujaribu/kamata, logi hitilafu.- Uwekaji misimbo ngumu wa Kitambulisho; Tumia kigezo au ingizo salama. Weka alama kwenye mistari ya uharibifu na uandike hatua za kutendua.

4) Uainishaji wa usemi wa Cron/ratiba na uthibitishaji:

Eleza kauli ifuatayo ya cron kwa Kituruki safi na uandike nyakati 3 za kukimbia zinazofuata: [maneno]Pia, ikiwa lengo langu ni "[kusudi]", je, kauli hii ni sahihi au kuna marekebisho unayopendekeza? Pia kumbuka athari ya muda.

Mwongozo dhaifu / Mwongozo thabiti

Agizo dhaifu:

Niandikie hati inayosafisha logi.

Kidokezo hiki ni hatari: haijulikani wazi ni OS gani, saraka gani, kikomo cha umri gani, ni mlinzi gani wa usalama. AI inaweza kutoa mjengo mmoja, rm yenye uharibifu na isiyoweza kuthibitishwa.

Agizo lenye nguvu:

Jukumu lako: mhandisi mkuu wa mitambo ya Linux. Andika hati ya kusafisha logi ya Ubuntu 22.04 / Bash. Futa faili za .logi chini ya /opt/app/logs ambazo ni za zamani zaidi ya siku 30 pekee. Kanuni: kuweka -euo pipefail; Thibitisha vigezo vya BACKUP_DIR na LOG_DIR (acha ikiwa tupu); logi orodha ya faili kabla ya kufuta; Acha DRY_RUN=kweli iwe chaguo-msingi, ufutaji halisi pekee na --apply; Wacha iwe ujinga. Weka alama kwenye mistari ya uharibifu na uandike hali 3 ambazo ninapaswa kujaribu.

kipengele

Hati dhaifu/haraka

hati ngumu

Ushughulikiaji wa hitilafu

Hapana, kushindwa kimya

set -euo pipefail, jaribu/kamata

hatua ya uharibifu

Inafanya kazi moja kwa moja

Dry-run + fungua alama ya kuangalia

Anzisha upya

inaweza kusababisha madhara

Idempont, salama

usimamizi wa siri

ngumu coded

Ingizo linalobadilika/fichwa

tengua

Hakuna

Hifadhi nakala + hatua ya kurejesha

Makosa ya kawaida

  • Kuendesha hati ya uharibifu bila kukauka. Kutoona hati iliyo na rm, Ondoa-Kipengee, DROP kwanza katika hali kavu ya diski.
  • Ruka ukaguzi usiofaa. Tofauti ya njia tupu hufanya / badala ya /chelezo/; : Hakikisha umethibitisha kwa "${VAR:?}".
  • Kusahau Idempotency. Hati huvunjika inapoendeshwa mara mbili, na kufanya otomatiki kutokuwa na uhakika.
  • Siri za kuweka rekodi ngumu. Kuandika nenosiri na ufunguo kwenye hati ni uvujaji unaposhiriki hati hiyo.
  • Mtihani katika uzalishaji. Kufanya mara ya kwanza katika uzalishaji kunamaanisha kufanya mazoezi jukwaani; jaribu mashine kwanza.
Makini: Usikubali hati iliyotolewa na AI kwa sababu tu "ilifanya kazi, hiyo inamaanisha kuwa ni sahihi". Kwa sababu inafanya kazi haimaanishi kuwa haina uharibifu. Script inaweza kukimbia kwenye njia ya furaha na kufuta data katika hali ya makali; Mtihani wa kweli ni kesi za makali.

Kwa muhtasari

Maandishi ya otomatiki huondoa kurudia na kupunguza makosa ya kibinadamu; AI ina haraka sana katika kutoa, kuelezea, na ugumu wa hati hizi. Lakini script ni nguvu ya kazi: ikiwa ni makosa, hufuta, huacha, huzuia. Kwa hivyo anzisha mzunguko wa "zalisha, gumu, thibitisha". Jumuisha kushughulikia makosa, kutokuwa na uwezo, kukauka, na kurudi nyuma katika kila hati mbovu. Futa siri kwa kutofautiana, fanya kukimbia kwanza kwenye mashine ya mtihani. Hati ya AI inaandika; Ni kazi yako kuisoma, kuijaribu, na kuchukua jukumu la kuiendesha.

Jukumu la maombi

Chagua jukumu ambalo unarudia mwenyewe katika kazi yako (k.m. kusafisha kumbukumbu, kufungua mtumiaji, kuangalia afya). Omba muhtasari kutoka kwa AI na kiolezo cha "Secure Bash script" au "PowerShell otomatiki salama" hapo juu. Soma mstari wa maandishi unaozalishwa kwa mstari na uweke alama kwenye mistari ya uharibifu. Iendeshe katika hali ya kukauka kwanza kwenye mashine ya majaribio, linganisha matokeo na matarajio yako. Kisha urudishe maandishi kwa AI na uisafishe kwa kiolezo cha "ngumu" na kumbuka tofauti 5 kati ya matoleo hayo mawili.

orodha ya ukaguzi

  • [ ] Je, nimejumuisha vizuizi kama vile OS, toleo la ganda, njia na haki katika dodoso?
  • [ ] Je, hati inastahimili makosa kwa set -euo pipefail / $ErrorActionPreference='Stop'?
  • [ ] Je, shughuli za uharibifu zinatokana na dry-run/-WhatIf na zinahitaji alama ya ukaguzi wazi?
  • [ ] Je, hati haina nguvu (salama kwa kukimbia mara ya pili)?
  • [ ] Je, nimetoa siri za kuingiza/kuweka siri badala ya kuziweka ngumu?
  • [ ] Je, nimefanya mara ya kwanza kwenye mashine ya majaribio na kuandaa mpango wa kurudi?