Qazanclar:
- Bash, Python və PowerShell-in güclü tərəflərini başa düşmək və süni intellektə malik olmaq bacarığı, təhlükəsiz, qorunan skript layihələri yaradır.
- Set -euo pipefail, boş dəyişənlərin yoxlanılması, quru iş rejimi və logging kimi skriptlərə qoruyucu barmaqlıqlar əlavə etmək imkanı
- Dağıdıcı əmrləri oxumaq və onları təcrid olunmuş mühitdə və əvvəlcə quru qaçışla sınamaq və skriptə sirri daxil etməmək intizamını tətbiq etmək bacarığı.
DevOps-un ruhu bir cümlə ilə ümumiləşdirilir: "Gördüyünüz işi iki dəfə avtomatlaşdırın." Əl ilə yerinə yetirilən hər hansı təkrarlanan tapşırıq - jurnalın təmizlənməsi, ehtiyat nüsxəsinin çıxarılması, serverin sağlamlığının yoxlanılması, toplu faylların işlənməsi vaxt aparır və nəticədə insan səhvi ilə korlanır. Skriptlər bu vəzifələri öz öhdəsinə götürür: ardıcıl, etibarlı və təkrarlanan bir şəkildə bir sıra əmrləri yerinə yetirən kiçik proqramlar. DevOps peşəkarı tez-tez üç dildən istifadə edir: Bash (Linux/Unix qabıq skriptləri üçün), Python (mürəkkəb məntiq, API çağırışı, məlumatların manipulyasiyası üçün) və PowerShell (Windows və bulud idarəetməsi üçün).
Süni intellekt bəlkə də skript yaratmaqda ən praktik dəyəri təklif etdiyi yerdir: bir cümləlik təsvirdən işçi qaralama hazırlamaq, sirli səhvi həll etmək, skripti başqa dilə tərcümə etmək. Lakin skript kor-koranə işlədildikdə təhlükəlidir — səhv rm, Remove-Item -Recurse faylları geri dönməz şəkildə siləcək. Buna görə də bu bölmənin şüarı belədir: Süni intellekt ssenarini yazsın, siz onu oxuyun, əvvəlcə təhlükəsiz rejimdə cəhd edin, sonra işə salın.
Hansı dili və nə vaxt seçmək lazımdır? Təxmini qayda: əgər iş ardıcıl olaraq bir neçə sistem əmrini yerinə yetirməkdən ibarətdirsə (faylın surətini çıxarın, xidməti yenidən başladın, arxivi bərpa edin) Bash ən təbii seçimdir, çünki Linux serverlərdə hər yerdə mövcuddur. Əgər iş qərar məntiqi, dövriyyə, verilənlərin transformasiyası, API tələbi və ya JSON emalı ilə bağlıdırsa, yəni məntiq 20 sətirdən artıqdır - Python oxunaqlılığı və zəngin kitabxanaları ilə seçilir; Mürəkkəb bir Bash skripti tez anlaşılmaz olur, Python isə asan saxlanılır. Əgər iş Windows serverlərini, Active Directory və ya Azure-u idarə etməyi əhatə edirsə, PowerShell təbii mühitdir, çünki onun obyekt yönümlü təbiəti bu platformalarla dərindən inteqrasiya edir. Süni intellektə skript tələb edərkən hansı dili seçdiyinizi və niyə seçdiyinizi göstərmək çıxışın sizin mühitinizə uyğun və idiomatik olmasını təmin edir.
Addım-addım: təhlükəsiz skript yaratmaq
- Tapşırığı və mühiti təsvir edin. Nə edəcək, hansı ƏS/qabıq, hansı məhdudiyyətlər var?
- Təhlükəsizlik barmaqlıqları tələb edin. Bash-da -euo pipefail təyin edin (səhvdə dayandırın, qeyri-müəyyən dəyişəndə dayandırın), təhlükəli əməliyyatlar üçün təsdiq sorğusu, silmək əvəzinə əvvəlcə hərəkət edin.
- Quru işləmə rejimini tələb edin. Skript --dry-run ilə nə edəcəyini yazsın, amma bunu etməyin.
- Oxuyun və anlayın. Hər bir sıranın nə etdiyini yoxlayın, xüsusən sil/köçür/şəbəkə əməliyyatlarını.
- Onu təcrid olunmuş bir mühitdə sınayın. Test qovluğunda onu nümunə məlumatları ilə işə salın.
- Girişə əlavə edin. Skriptin nə etdiyini yazmasına icazə verin ki, daha sonra baxa bilsin.
Təhlükəsiz skriptin əsasları
İstehsal skripti bu qoruyucuları ehtiva etməlidir:
- Səhv halında dayanma. Bash: set -euo pipefail. PowerShell: $ErrorActionPreference = 'Dayan'. Bir addım uğursuz olarsa, sonrakılar işləməməlidir.
- İdempotentlik (təkrarlanabilirlik). Skript iki dəfə işləyirsə, o, ikiqat ziyan vurmamalıdır; "Əgər artıq varsa, atla" məntiqi.
- Təsdiq və quru iş. Dağıdıcı əməliyyatlar üçün "əminsinizmi?" və ya --dry-run bayrağı.
- Girişin doğrulanması. Parametrlər gözlənilən kimidirmi? Boş dəyişən rm -rf "$DIR"/-ni rm -rf / fəlakətə çevirə bilər.
- Giriş. Nə və nə vaxt edildiyini qeyd edin.
İpucu: Bash-da ən təhlükəli səhv boş dəyişənlə silməkdir. rm -rf "$DIR" əgər $DIR boşdursa, kök kataloqunu silməyə çalışır. -u təyin edin (müəyyən edilməmiş dəyişəndə dayandırın) və silmədən əvvəl [ -n "$DIR" ] yoxlanılması xilasedicidir. AI-dən skriptlər tələb edərkən bu qorumaları açıq şəkildə tələb edin.
Təhlükəsizlik: gizli və dağıdıcı əmrlər
İki böyük təhlükə:
- Ssenariyə sirri daxil etmək. Parol mö'cüzə skripti daxilində açıq mətn olmamalıdır; Ətraf dəyişən və ya kassadan oxunmalıdır. Skriptlər Git-ə daxil olur; basdırılan sirr qalıcı sızmadır.
- Dağıdıcı əmrlər. rm -rf, Remove-Item -Recurse -Force, DROP TABLE, terraform məhv — bunları bir skriptdə görəndə dayanın və iki dəfə düşünün. Əvvəlcə məhsulda AI tərəfindən yaradılan dağıdıcı əmri heç vaxt sınamayın.
Diqqət: Süni intellektə "bu faylları təmizləyən skript yazın" dedikdə, tapdığı tapıntının əhatə dairəsini diqqətlə oxuyun ... -delete və ya rm əmri. Joker işarə (*) və ya yanlış yol silmək istədiyinizdən daha çoxunu siləcək. Skripti həmişə silmək əvəzinə "silmək üçün siyahı" rejimi ilə işə salın.
Üç dilin müqayisəsi
meyar
bash
Python
PowerShell
Ən yaxşısı harada
Linux qabığı, əmr zənciri
Kompleks məntiq, API, verilənlər
Windows bulud idarəetməsi
Öyrənmə əyrisi
Orta (tutulmuş)
asan
orta
Xəta ilə işləmə
set -euo pipefail
cəhd edin/istisna
cəhd et/tut, -ErrorAction
daşınma qabiliyyəti
Unix/Linux/mac
hər yerdə
Çarpaz platforma (PS 7+)
nə vaxt
Qısa, sistem işləyir
20 sətirdən uzun məntiq
Windows/AD/Azure
üç mini qutu
1-ci hal - 5 dəqiqəyə 2 saatlıq sənətkarlıq. Mühəndis hər həftə 40 serverdən qeydləri toplamaq və arxivləşdirmək üçün 2 saat vaxt sərf edirdi. O, süni intellektə tapşırığı təsvir etdi və -euo pipefail + quru iş qorumalarını təyin etdi və Bash skripti yaratdı. Əvvəlcə skripti quru işləmə ilə təsdiqlədi, sonra onu planlaşdırılan tapşırıqla əlaqələndirdi (cron). Həftəlik iş 5 dəqiqəyə endirilir və insan səhvi aradan qaldırılır.
2-ci hal – sıfır dəyişən fəlakətin qarşısı alındı. Süni intellekt tərəfindən hazırlanmış təmizləmə skriptində rm -rf "$TARGET"/* var idi, lakin TARGET hardasa təyin olunmayıbsa, o, boş qalırdı. Bunu mühəndis kimi oxuyarkən dərk etdi; set -u və [ -n "$TARGET" ] || çıxış 1 nəzarəti əlavə etdi. Test zamanı dəyişən sıfır olaraq qaldı və skript fəlakətli deyil, təhlükəsiz şəkildə dayandı.
Case 3 — daxil edilmiş nişan ələ keçirilib. Rahatlıq üçün, AI API tələb edən Python skriptinə TOKEN = "ghp_realtoken" xətti əlavə etdi (nümunə kimi). Mühəndis bunu sildi və os.environ["TOKEN"] ilə mühit dəyişənindən oxumağa dəyişdi və tokeni ləğv edib yenilədi. Skript Git-ə getsəydi, token ictimai olardı.
Dörd kopyalana bilən şablon
1) Təhlükəsiz Bash skripti:
Bash skripti yazın: [TASK]. Məcburi qaydalar:- `başlanğıcda -euo pipefail` təyin edin.- Silinən/köçürülən yerdə dəyişənin boş olmadığını yoxlayın.- `--dry-run` bayrağı: bu rejimdə nə edəcəyinizi yazın, lakin bunu etməyin.- Sirri daxil etməyin; Ətraf mühit dəyişənindən oxuyun. - Hər addımda məlumat jurnalını çap edin. Ssenariyə şərh verin və ən təhlükəli xətti qeyd edin.
2) Skript təsviri/nəzarəti:
Aşağıdakı skripti sətir-sətir təsvir edin və təhlükəsizliyi yoxlayın: daxil edilmiş gizli, dağıdıcı əmr (rm/Remove-Item/DROP), təsdiqlənməmiş daxiletmə, səhvlərin idarə olunmasının olmaması? Hər bir riski əhəmiyyət və düzəliş sırası ilə yazın. Skript: [KOD]
3) Dil tərcüməsi:
Həmin [MƏNBƏ DİLİ] skriptini [HƏDƏF DİLİ] dilinə tərcümə edin. Davranışı sözlə saxlayın, hədəf dilin idiomatik səhv idarəçiliyindən istifadə edin, hər hansı daxil edilmiş sirri mühit dəyişəninə köçürün. Fərqli davrana biləcək məqamları qeyd edin.Script: [KOD]
4) Planlaşdırılmış tapşırıq (cron/planlaşdırılmış tapşırıq):
Bu skriptdən istifadə edin [TEZLİK: məs. [Hər gecə saat 02:00-da] işləyəcək cədvəl tərifini ([cron / systemd timer / Windows Task Scheduler]) yazın. Uğursuzluq barədə məni necə xəbərdar edəcəyimi (giriş/çıxış kodu/bildiriş) və üst-üstə düşmənin qarşısını almaq yollarını əlavə edin.
Zəif məlumat / Güclü göstəriş
Zəif: "Köhnə faylları silən skript yazın."
Nəticə: əhatə dairəsi olmayan, qorunmayan, quru işləməyən rm skripti; Səhv qovluqda işləyirsə, geri dönməz şəkildə silinəcəkdir.
Güclü: "/var/log/app altında 30 gündən çox köhnə .log fayllarını silmək üçün bash skripti yazın. set -euo pipefail istifadə edin, hədəf kataloqu boşdursa dayandırın, əvvəlcə --dry-run ilə silinəcəkləri siyahıya alın, hər əməliyyatı qeyd edin, sirri daxil etməyin. Ən təhlükəli xətti qeyd edin."
Fərq: ikinci iddia tam əhatə dairəsini, təhlükəsizlik qoruyucularını və quru qaçış gözləntisini verir; Çıxış təhlükəsiz şəkildə işlədilə bilər.
Ümumi səhvlər
- Skripti oxumadan işlətmək. Xüsusilə sıraların silinməsi/köçürülməsi fəlakətə səbəb olur.
- Boş dəyişənlər yoxlanılmır. Kök qovluğunun rm -rf "$X"/ ilə silinməsinin klassik fəlakəti.
- `set -euo pipefail` / `-ErrorAction Stop`u keçin. Bir addım alovlanır, ssenari kor-koranə davam edir.
- Ssenariyə sirri daxil etmək. Git-ə davamlı sızma.
- Quru qaçış olmadan dağıdıcı proses. Əvvəlcə "mənə nə edəcəyimi göstər", sonra bunu et.
- Məhsulda ilk cəhd. Təcrid olunmuş sınaq mühiti olmadan işləmək.
Xülasə
DevOps avtomatlaşdırma sənətidir; Təkrarlanan iş Bash, Python və PowerShell skriptlərinə verilir. Süni intellekt skriptlərin hazırlanmasında, sazlanmasında və dillərin tərcüməsində çox rahatdır – lakin təhlükəsiz skriptdə set -euo pipefail, null dəyişənlərin yoxlanılması, quru işləmə rejimi, daxil edilmiş gizlilik və giriş kimi səhv qoruyucuları olmalıdır. Hər bir skripti, xüsusən də dağıdıcı əmrləri olanları təcrid olunmuş mühitdə oxumaq və sınaqdan keçirmək sizin məsuliyyətinizdir.
Tətbiq tapşırığı
Təkrarlanan tapşırıq seçin (log arxivləşdirmə, ehtiyat nüsxə, təmizləmə). (1) Süni intellektin "Təhlükəsiz Bash skripti" şablonu ilə qorunan skript yaratmasını təmin edin. (2) "Skript təsviri/audit" şablonu ilə eyni skriptin təhlükəsizliyi yoxlayın və AI-nin işarələdiyi ən təhlükəli xətti tapın. (3) Test qovluğunda nümunə faylları olan skripti əvvəlcə --dry-run ilə işlətməklə onun davranışını yoxlayın.
yoxlama siyahısı
- [ ] İstəmədiyim tapşırığı, ƏS/qabıq və təhlükəsizlik qoruyucularını yazdım.
- [ ] Skriptdə set -euo pipefail / -ErrorAction Stop kimi dayandırma xətası var.
- [ ] Silinmədən/köçürülməzdən əvvəl boş dəyişən və giriş yoxlamasını əlavə etdim.
- [ ] Dağıdıcı əməliyyatlar üçün --dry-run/təsdiq mexanizmi var.
- [ ] Ssenariyə daxil edilmiş heç bir sirr yoxdur; dəyərlər ətraf mühit dəyişkənindən/haldan gəlir.
- [ ] İlk testi təcrid olunmuş sınaq mühitində quru qaçışla etdim.