Qazanclar:
- IaC konsepsiyasını və Terraformun iş dövrünü (başla, planlaşdır, tətbiq et, vəziyyət, modul) başa düşmək və süni intellektə malik olmaq, təhlükəsiz HCL layihələrini hazırlamaq bacarığı
- Tətbiq etməzdən əvvəl hər dəyişikliyi planla yoxlamaq və gözlənilməz məhv/dəyişmə xətlərini tutmaq imkanı
- Sirləri koddan kənarda saxlamaq, vəziyyəti təhlükəsiz saxlamaq və IAM icazələrini minimuma endirmək prinsiplərini tətbiq etmək bacarığı
Keçmişdə server qurmaq bir bulud panelindən keçmək məsələsi idi: virtual maşın yaradın, şəbəkə qurun, təhlükəsizlik qaydasını əlavə edin. Bu üsul yavaş, səhvə meyilli və təkrarolunmaz idi - eyni mühiti ikinci dəfə qurmaq demək olar ki, mümkün deyildi. Bu gün infrastruktur kod kimi idarə olunur. IaC (Kod kimi İnfrastruktur) serverlər, şəbəkələr və verilənlər bazası kimi bulud resurslarını əl ilə deyil, mətn fayllarında təsvir etmək üçün bir yanaşmadır. Bu fayllar versiya nəzarətində (Git) oturur; Kimin nəyi, nə vaxt və nəyi dəyişdiyini görə bilərsiniz; Bir əmrlə eyni infrastrukturu dəfələrlə, tam eyni şəkildə qura bilərsiniz.
Ən çox yayılmış IaC aləti Terraformdur. Terraform yazdığınız tərifləri HCL (HashiCorp Konfiqurasiya Dili — Terraformun konfiqurasiya dili) adlı oxunaqlı dildə götürür, onları bulud provayderinin (AWS, Azure, GCP) API-sinə çevirir və resursları yaradır. AI HCL-ni çox yaxşı tanıyır və mürəkkəb blokları tez istehsal edir. Lakin IaC-də bir səhvin qiyməti yüksəkdir: bir səhv tərif bütün istehsal məlumat bazasını silə bilər. Buna görə də Terraformda qızıl qayda hər dəyişikliyi həyata keçirməzdən əvvəl bir “plan” ilə görməkdir.
Terraformun işləmə müddəti
Terraform üç əsas əmrlə işləyir – bunları bilmək AI çıxışına nəzarət etmək üçün ilkin şərtdir:
- `terraform init`: Layihəni işə salır, lazımi provayder plaginlərini endirir.
- `terraform plan`: Mövcud vəziyyəti istədiyiniz vəziyyətlə müqayisə edir və nə əlavə etmək, nəyi dəyişdirmək, nəyi silmək lazım olduğunu göstərir. Heç nə həyata keçirmir. Bu, təhlükəsizlik baxımından ən vacib addımdır.
- `terraform tətbiq et`: Planı faktiki olaraq tətbiq edir, resursları yaradaraq/dəyişdirir.
Bundan əlavə, iki anlayış vacibdir. Dövlət (dövlət faylı): Bu, Terraformun idarə etdiyi resursların cari vəziyyətini saxladığı fayldır; O, adətən iki nəfərin eyni anda dəyişdirə və ya məhv edə bilməməsi üçün uzaq və kilidli anbarda saxlanılır. Modul: Yenidən istifadə edilə bilən konfiqurasiya paketi; Məsələn, bir çox layihələrdə "şəbəkə qurmaq" modulundan istifadə edə bilərsiniz.
İpucu: Terraform çıxışında ən təhlükəli əlamət plan çıxışındakı xətləri məhv etmək və ya -/+ (dəyişmək) etməkdir. Bu o deməkdir ki, resurs silinəcək. Bir planda gözlənilməz dağıntı görürsünüzsə, heç vaxt müraciət etməyin, əvvəlcə bunun niyə ortaya çıxdığını anlayın.
Addım-addım: AI ilə IaC yazmaq
- İstədiyiniz infrastrukturu aydınlaşdırın. "eu-central-1-də bir VPC, iki alt şəbəkə, bir təhlükəsizlik qrupu və bir t3.micro EC2" kimi konkret olun.
- Provayderi və versiyanı göstərin. Hansı bulud, hansı Terraform və provayder versiyası? Versiya göstərməsəniz, AI köhnəlmiş/uyğun olmayan sintaksisi qaytara bilər.
- HCL layihəsini hazırlayın. Həmçinin dəyişənləri və çıxışları tələb edin.
- Sirri çıxarın. Parollar və açarlar kimi dəyərlər koda deyil, dəyişənlərə və gizli kassaya getməlidir.
- 'init' + 'plan'ı işə salın. Planın çıxış sətirini oxuyun; Gözlənilməz silinmələri yoxlayın.
- Kiçikdən başlayın, tədricən həyata keçirin. Əvvəlcə onu təcrid olunmuş test hesabında/mühitində tətbiq edin.
Təhlükəsizlik: IaC-ə xas risklər
IaC güclü olduğu qədər də risklidir. Üç kritik nöqtə:
- Dövlət sənədində bir sirr var. Terraform vəziyyəti bəzən verilənlər bazası parolları kimi həssas dəyərləri açıq mətndə saxlayır. Heç vaxt dövləti ictimai depoya qoymayın; Şifrələnmiş, girişi məhdud olan uzaqdan istifadə edin.
- HCL-də sirləri yerləşdirməyin. password="prod123" kimi sətirlər daimi olaraq Git tarixçəsinə yazılır. Əvəzində dəyişəndən istifadə edin və ətraf mühit dəyişənindən (TF_VAR_...) və ya gizli kassadan iş vaxtı dəyərini verin.
- Çox geniş IAM icazəsi. Süni intellekt bəzən Fəaliyyət kimi bloklar istehsal edir: "*" (hər şeyə icazə verin) "işlətmək". Bu zəiflikdir; icazəni tələb olunan minimuma qədər daralt.
Diqqət: Git tarixinə sirr daxil olduqdan sonra o, keçmişdə qalır və hətta faylı silsəniz belə, ələ keçirilə bilər. Səhv etsəniz, dərhal ləğv edin və sirri çevirin; Sadəcə silmək kifayət deyil.
Riskli plan işarələri cədvəli
Çap planı
Mənası
nə etməli
+yarat
Yeni resurs əlavə olunacaq
Ümumiyyətlə təhlükəsiz olsa da, nəzərdən keçirin
~ yerində yeniləmək
Mənbə saytda dəyişəcək
Təsiri yoxlayın (kesinti olacaq?)
-/+ dəyişdirin
Silinəcək və yenidən yaradılacaq
DİQQƏT: məlumat itkisi baş verə bilər
- məhv etmək
Resurs məhv ediləcək
STOP: gözləmirsinizsə, heç vaxt müraciət etməyin
üç mini qutu
1-ci hal - 3 saat ərzində 2 günlük iş. Bir komanda yeni test mühiti (VPC, alt şəbəkələr, RDS verilənlər bazası, ECS klaster) qurmaq üçün Terraform yazmaq niyyətində idi, lakin onlar HCL-ə yenicə keçmişdilər. Onlar AI-nin memarlığını və versiyalarını təsvir etdilər və modul plan hazırladılar. Onlar hər modulu planla yoxladılar və 3 saat ərzində işə saldılar; Onlara iki gün əl ilə sınaq və səhvlər lazım olacaq.
2-ci hal - plan silindi. Mühəndis süni intellekt tərəfindən yaradılan yeniləmə kodunu tətbiq etmədən bir plan həyata keçirdi. Çıxışda istehsal verilənlər bazası üçün -/+ dəyişdirin - AI əvəz olunmayan sahəni əvəz etməyə çalışdı, bu da verilənlər bazasını silmək və yenidən yaratmaq demək idi. Mühəndis müraciət etməyi dayandırdı və dəyişikliyi təhlükəsiz üsula dəyişdi. Planlaşdırma vərdişi bir fəlakətin qarşısını aldı.
3-cü hal - gizli sızma. Kiçik, YZ db_password = "S3cret!" O, xətti olduğu kimi etdi və itələdi. Kod baxışında tutuldu; Parol dərhal ləğv edildi və dəyişdirildi, dəyər dəyişənə köçürüldü və gizli kassadan qidalandı. Dərs: HCL-də heç vaxt açıq mətn sirləri yoxdur.
Dörd kopyalana bilən şablon
1) İnfrastruktur layihəsinin yaradılması:
Terraform (versiya ~> 1.7) ilə [CLOUD: AWS] üzərində aşağıdakı infrastrukturu yazın: [MƏNBƏ SİYAHISI]. Region [X]. Qaydalar:- Bütün həssas dəyərləri dəyişən edin, onları HCL-ə daxil etməyin.- Provayder versiyasını düzəldin (lazımlı_provayderlər).- IAM icazələrini minimuma endirin, "*" istifadə etməyin.- Çıxış kimi [X, Y] qaytarın. Kodu modul şəkildə və izahatlarla verin.
2) Plan nəticəsinin şərh edilməsi:
Aşağıdakı "terraform plan" çıxışını təhlil edin. Məni siyahıya salın:(1) hansı resursların əlavə edildiyi/dəyişdirildiyi/SİLİNDİ,(2) verilənlərin itirilməsi və ya kəsilmə riski olan sıralar,(3) müraciət etməzdən əvvəl verməli olduğum 3 sual.Plan: [ÇIXIŞ]
3) Təhlükəsizlik üçün mövcud HCL-i yoxlayın:
Təhlükəsizlik üçün aşağıdakı Terraform kodunu yoxlayın: daxil edilmiş məxfi, həddindən artıq geniş IAM icazəsi, açıq şəbəkə qaydası (0.0.0.0/0), şifrələnməmiş yaddaş? Hər tapıntını əhəmiyyət və düzəliş sırası ilə yazın. Kod: [HCL]
4) Təkrarlanan kodu modula çevirin:
Aşağıdakı təkrarlanan Terraform kodunu təkrar istifadə edilə bilən modula çevirin: dəyişənlər hansı dəyərlər olmalıdır, modul interfeysi necə olmalıdır? İstifadə nümunəsini də göstərin. Kod: [HCL]
Zəif məlumat / Güclü göstəriş
Zəif: "Terraform ilə verilənlər bazası yaradın."
Nəticə: hansı bulud, hansı mühərrik, hansı versiya, şifrələnmiş və ya olmadığı aydın deyil; Köhnə sintaksis ilə süni intellekt şifrəni koda daxil edən ictimaiyyətə açıq nümunə təqdim edə bilər.
Güclü: "Terraform ~> 1.7 ilə AWS-də RDS PostgreSQL 15 nümunəsi yaradın. Parolu dəyişən edin, onu koda daxil etməyin. Yaddaş şifrələnib, yalnız şəxsi alt şəbəkədən əlçatandır, ictimai deyil. Provayder versiyasını düzəldin. Son nöqtəni çıxış kimi qaytarın."
Fərq: ikinci sorğu mühərriki, versiyanı, şifrələməni, şəbəkə məhdudiyyətini və məxfi qaydanı verir — çıxış təhlükəsizdir və məhsula yaxındır.
Ümumi səhvlər
- 'plan' qurmadan 'müraciət etmək'. IaC-də ən bahalı səhv; həmişə ilk plan.
- HCL-də yerləşdirmə sirri. Git tarixçəsinə daimi sızma yaradır.
- Saxlama dövləti etibarsızdır. Şifrələnməmiş, kilidi açılmış ictimai dövlət fəlakətdir.
- Versiyanı düzəltmir. Versiya göstərmədən provayderdən istifadə gələcəkdə qəfil uğursuzluqlara səbəb olacaq.
- *`Fəaliyyət: ""` kimi geniş icazə.** Ən az imtiyaz prinsipini pozur.
- Gözlənilməz "məhv"ə məhəl qoymamaq. Planda silmə sətirlərinin sorğu-sual edilmədən tətbiqi.
Xülasə
IaC infrastrukturu təkrarlanan, versiya edilə bilən və yoxlanıla bilən koda çevirir; Ən çox yayılmış vasitə Terraformdur. Süni intellekt tez bir zamanda HCL stubları istehsal edir, lakin siz versiyanı, buludlara aid detalları və təhlükəsizlik qaydalarını təqdim etməlisiniz. Terraform-da qüsursuz qayda: hər dəyişikliyi bir planla görmək, gözlənilməz silinmələri sorğulamaq, sirləri koddan uzaq tutmaq və vəziyyəti təhlükəsiz saxlamaq. Plan çıxışında məhv və dəyişdirmə xətləri ən diqqətlə oxunmalı olan yerlərdir.
Tətbiq tapşırığı
Yuxarıdakı "İnfrastruktur eskizini yaradın" şablonundan istifadə edərək süni intellektə kiçik bir infrastruktur (məsələn, yaddaş qutusu və giriş siyasəti) yaratmasını təmin edin. Sonra: (1) koda daxil edilmiş məxfi və ya * icazələr üçün "yoxlama" şablonunu yoxlayın; (2) mümkünsə, test hesabında init + planını işlədin və planın çıxışını "planın şərhi" şablonu ilə oxuyun; (3) gözlənilməz silinmələri/dəyişiklikləri qeyd edin.
yoxlama siyahısı
- [ ] Mən sorğuma bulud, Terraform/provayder versiyası və şifrələmə/şəbəkə məhdudiyyətləri əlavə etdim.
- [ ] Kodda açıq mətn sirri yoxdur; dəqiqlik dəyərləri dəyişəni.
- [ ] Mən IAM/icazələri minimum icazələrə qədər daraltdım, * istifadə etmədim.
- [ ] Tətbiq etməzdən əvvəl planı icra etdim və çıxışı sətir-sətir oxudum.
- [ ] Planda gözlənilməz məhv/dəyişmə olmadığını təsdiqlədim.
- [ ] Əminəm ki, dövlət şifrələnmiş, kilidlənmiş və məhdudlaşdırılmış arxa hissədə saxlanılır.