Skip to main content

Terraform - I Hissə

Salam dostlar. Bu qısa məqalədə sizə Terraform haqqında bəhs edəcəm. Beləliklə,


 Terraform nədir?

Terraform (infrastructure as code (IaC), kod kimi infrastruktur), "HashiCorp" tərəfindən yaradılan, fiziki resursları-yəni infrastruktur tələbləri və asıllığını kod şəklində (IaC) təmin edən, səmərəli, təhlükəsiz və sürətli şəkildə yazma, quraşdırma, dəyişiklik, təkmilləşdirmə, kodlaşdırma, versiya etmə, avtomatlaşdırma, yoxlanış, və s. imkanı verən, (open source) açıq qaynaq kodlu bir avtomatlaşdırma (alət/tool) vasitəsidir. Beləliklə, (IaC) kod kimi infrastruktur adlanan bu avtomatlaşdırma sayəsində, bir neçə dəqiqə ərzində terraform ilə bütün infrastrukturu qaldırmaq, eləcə də sistem, şəbəkə, saxlanc (storage) və s. bütün əməliyyat və tənzimləmələrin (ümumiyyətlə bütün infrasturkturun) mərkəzdən idarə edilməsini həyata keçirmək mümkün olur. Lisenziyası MPL (Mozilla Public License) əsaslı olan və "Go" proqramlaşdırma dilində yazılan Terraform, 2014-cü ildə yaradılmışdır və "Windows", "Linux", "MacOs", "FreeBsd", "OpenBsd", "Solaris" əməliyyat sistemlərini dəstəkləyir. Terraform açıq mənbəli olduğundan, "developer"-lər hər zaman yeni "plugin"-lər yazaraq və ya mövcud "plugin"-lərin fərqli versiyalarını tərtib edərək, alətin (tool-un) faydalılığını daha da genişləndirə bilirlər. Terraform arxitekturası aşağıdakı vacib komponentlərdən ibarətdir: "Terraform Core", "Terraform Plugins" və "Upstream APIs".

No alt text provided for this image
  • Terraform Core - resurslara aid qrafikin qurulması və planın icrası, idarəetmə və konfiqurasiya fayllarının oxunması və interpolasiyasına nəzarət edir. Yeri gəlmişkən qeyd edim ki, Terraform konfiqurasiya faylları HCL (Hashicorp Configuration Language) konfqiruasiya dilinin köməyi ilə yazılmışdır. Terraform, asılılıqların idarə edilməsi üçün müasir qraf nəzəriyyəsinə çox güvənir. TC (Terraform Core) tərtib edilmiş ikili fayllardan ibarətdir ki, həmin ikili fayllar planlaşdırma və tətbiqetmə mərhələsində "remote procedure call" interfeysi (RPC) vasitəsilə plugin-lərlə əlaqənin qurulmasını həyata keçirir. RPC interfeysilə bağlı məlumatlı deyilsinizsə, onda fərz edək ki, plugin bir server-dir və Terraform Core isə bu serverə API sorğuları edir. Terraform Core ayrıca olaraq aşağıdakı üsülları da həyata keçirir: Diff (fərq) - istədiyiniz vəziyyətlə cari vəziyyət arasındakı fərqi əldə edir; Apply (tətbiq) - cari vəziyyəti istənilən vəziyyətə gətirmək üçün konfiqurasiyanı tətbiq edir; Refresh (yeniləmə) - cari vəziyyəti yeniləyir.
No alt text provided for this image
  • Terraform Plugins - xüsusi "service" üçün resursların təyin edilməsində məsul işi həyata keçirir. Buraya, infrastruktur provayderlərinin müəyyən edilməsi, və "API Calls" üçün istifadə olunan kitabxanaların işə salınması daxildir. Terraform plugins ya xüsusi "service" ya da "provisioner" kimi istifadə edilə bilər. "Provisioner" plugin-lər əmrlərin icrası ilə təyin edilmiş resurslar üçün istifadə olunur;
No alt text provided for this image
  •  Upstream APIs - Terraformun çox sayda qoşula bilən hissəsi var ki, ən çox yayılmış plugin növü Terraform Provider Plugin-dir. Terraform Provider Plugin, üçüncü tərəf service-lər ilə əlaqə qurmaq üçün CRUD (Create-yaratmaq, Read-oxumaq, Update-yeniləmək və Delete-silmək) API ilə resursların funksionallığını həyata keçirir. Qeyd edim ki, Terraform Core heç vaxt API ilə birbaşa əlaqə qurmur. Bunun əvəzinə Terraform Core, Terraform Provider Plugin-dən bir əməliyyatın yerinə yetirilməsini istəyir ki, bu zaman plugin yuxarı (upstream) API ilə əlaqəni qurmuş olur.
No alt text provided for this image
No alt text provided for this image


Terraform modulları

Terraform modulları mürəkkəb resursların istifadəsinə imkan yaradır. Belə ki hər bir modul mahiyyət etibarilə "developer"-in bir araya toplamaq istədiyi çoxsaylı infrastruktur resursları üçün bir konteynerdir. Modulların həm giriş, həm də çıxış dəyişənləri var ki, giriş (input) dəyişənləri bir moduldan dəyərləri qəbul etdiyi halda, çıxış (output) dəyişənləri isə məlumatları həmin modula geri qaytarır. Modullar bir-biriləri ilə əlaqə saxlaya bilər ki, bu da konfiqurasiyaları daha sürətli etməyə kömək edir. Terraform Registry-nin hər modulunda adlandırma və standard modul quruluşu, "repository" təsviri, dəstəklənən (versiya) idarəetmə sistemi və "release" üçün etiketlər olmalıdır. Terraform Registry, modul paylaşımı üçün mərkəzləşdirilmiş bir "repository" rolunu oynayır, eləcə də Terraform modullarının kəşfini və istifadəçilərə paylanmasını təmin edir. Registry (2) iki variantda mövcuddur:

  • Public Registry - müəyyən bir resurs və "community" tərəfindən verilən modulları idarə etmək üçün API ilə qarşılıqlı-əlaqəli service-ləri saxlayır;
  • Private Registry - bir şirkət və ya təşkilat daxilində modullar üçün istifadə olunan service-ləri saxlayır.

Terraform istifadəsinin üstünlükləri və çətinlikləri vardır:

Üstünlükləri:

  • HCL kodunu JSON-a tərcümə edə bilir;
  • Bir çox bulud platformasını dəstəkləyə bilir;
  • Resurslarda dəyişikliklər edə bilir;
  • Mövcud resursları Terraform-un vəziyyətinə uyğunlaşdıra bilir;
  • Yalnız bir nəfərin dəyişiklik edə biləcəyini təmin etmək üçün vəziyyətə uyğun dəyişiklikləri tətbiq etməzdən əvvəl modulları kilidləyə bilir.

Çətinlikləri:

  • Yeni buraxılış versiyaları və yeniləmələrdə səhv ola bilər;
  • İstifadəçilər seçimə görə JSON istifadə edə bilməsələr, yeni bir dil - HCL öyrənmək məcburiyyətində qala bilərlər;
  • Resursların adını dəyişdirmək və onları modulların içərisinə daxil etmək çətin ola bilər.

Dostlar,

Fikrimcə, Terraform haqqında məqaləmin ilk (I) hissəsində bu qədər, növbəti (II) hissədə bəzi nəzəri və praktiki məlumatları sizə təqdim edəcəm. Güman edirəm ki, bu qısa məqaləm bilgilənmə istiqamətində işinizə yarayacaqdır.

Təşəkkür edirəm və uğurlar!

Hörmətlə,
Müəllif
Araz Əhmədov


Comments

Popular posts from this blog

Fayl Bərpa Alqoritmləri

  Salam dostlar, Bu yazımda sizə fayl bərpa proqramlarının (Recuva, Wondershare, EaseUS Data Recovery və s.) faylları bərpa etməsi haqqında bəhs etmək istərdim ki, məhz bu proqramlar silinmiş məlumatların (şəkil, video, sənəd və s.) geri qaytarılması üçün xüsusi alqoritmlərdən istifadə edir. Bu prosesin texniki tərəflərini izah etmək üçün əvvəlcə bir neçə əsas anlayışı bilmək lazımdır: Silinmiş faylların vəziyyəti Əksər fayl sistemlərində (məsələn, NTFS, FAT32, exFAT) fayl silindikdə, həmin fayl fiziki olaraq diskin üzərindən silinmir ki, bu zaman: Fayl sistemində faylın olduğu yer boş olaraq işarələnir və həmin sahə üzərində yeni məlumat yazıla bilməsi üçün icazə verilir; Faylın "metadata"-ları (fayl adı, ölçüsü, yaradılma tarixi və s.) xüsusi strukturlarda saxlanılır (məsələn, NTFS-də MFT / Master File Table). Bu səbəbdən, fayl silindikdən dərhal sonra onu bərpa etmək mümkündür, çünki həmin məlumat fiziki olaraq diskin üzərində qalır. Ancaq yeni məlumat həmin yerə yazıldıqd...

How To Install WordPress On Rocky Linux 9

WordPress is widely recognized as the preferred platform for building websites and blogs due to its ease of use and wide range of customization features. Suppose you’re considering installing WordPress on Rocky Linux, an open-source operating system known for its reliability. In that case, you’ll find the process to be quite straightforward when coupled with the LAMP stack – Linux, Apache, MySQL, and PHP. In the following article, we will guide you through each step of setting up WordPress on Rocky Linux using LAMP, allowing you to get your website or blog up and running smoothly in no time. So, let’s dive into the process! Install WordPress On Rocky Linux 9 Step 1: Update Your System in Rocky Linux Step 2: Installation process of LAMP Step 3: Install WordPress in Rocky Linux 9 Step 4: Configuration of Database Step 5: Configuration of WordPress Step 6: Configuration of Firewall settings Step 7: Log in to WordPress Step 1: Update Your System in Rocky Linux Before installing any new sof...

Fayl şifrələmə vasitələri (Linux)

Salam dostlar, Bu məqaləmdə "linux"-da istifadə olunan bəzi fayl şifrələmə vasitələri (file encryption tools) haqqında bəhs edəcəm. Beləliklə, fayl şifrələməsi nədir və "linux"-da hansı fayl şifrələmə vasitələri mövcuddur? Fayl şifrələməsi mübadilə edilən məlumatların oxunmaz vəziyyətə çevrilməsi prosesidir ki, faylların şifrələnməsi təhlükəsizlik baxımından çox vacibdir. Beləliklə, "linux"-da faylların şifrələməsini həyata keçirən bəzi vasitələr (tools) mövcuddur: "GnuPG (GPG)" "GnuPG" şifrələmə və rəqəmsal imza məqsədləri üçün geniş istifadə olunan pulsuz və açıq mənbəli proqramdır ki, faylları və e-poçtları şifrələmək, eləcə də deşifrə etmək üçün "OpenPGP" standartından istifadə edir. Bu şifrələmə platformasınds əvvəlcə "public key" və "private key" yaradılmalıdır ki, bu zaman "public key" şifrələmə (encrypt), "private key" isə şifrənin açılması (decrypt) üçü...