Sobes.tech
Middle

DevOps rolunda niyə iki dəyişən qovluğu lazımdır və onlar hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

DevOps vəzifəsində, ümumiyyətlə, ümumi və mühitə (ətraf mühitə) aid tənzimləmələri ayırmaq üçün iki dəyişən qovluğu istifadə olunur. Bu, konfiqurasiyaların çevikliyini, təkrar istifadəsini və təhlükəsizliyini artırır.

İki əsas qovluq:

  1. group_vars: Müəyyən bir inventar qrupundakı bütün hostlara tətbiq olunan dəyişənləri ehtiva edir. Bu fayllardan alınan dəyişənlər, fayl adı ilə uyğun olan qrupa daxil olan hostlara tətbiq olunur (məsələn, group_vars/web_servers.yaml) və ya group_vars/all.yaml faylında (bütün hostlara tətbiq olunur). Bu, server qrup üçün ümumi tənzimləmələri müəyyən etmək üçün faydalıdır (məsələn, şəbəkə tənzimləmələri, quraşdırma yolları).
  2. host_vars: Fərdi hostlar üçün xüsusi dəyişənləri ehtiva edir. Bu fayllardan alınan dəyişənlər yalnız müəyyən bir hosta tətbiq olunur, onun adı fayl adı ilə uyğun gəlir (məsələn, host_vars/server1.example.com.yaml). Unikal host tənzimləmələri üçün istifadə olunur (məsələn, xüsusi interfeyslərin IP ünvanları, proqram versiyaları, xüsusi girişlər).

Ansible istifadə edərkən qovluq strukturuna nümunə:

# Dəyişənlərlə qovluq strukturu
.
├── inventory  # Inventar faylı və ya qovluğu
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # Bütün hostlar üçün dəyişənlər
│   └── web_servers.yaml # web_servers qrupu üçün dəyişənlər
└── host_vars
    ├── server1.example.com.yaml # server1 üçün dəyişənlər
    └── server2.example.com.yaml # server2 üçün dəyişənlər

Fayl məzmununa nümunə:

// group_vars/all.yaml
---
# Bütün hostlar üçün ümumi dəyişənlər
tz: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# web_servers qrupu üçün dəyişənlər
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# server1 üçün xüsusi dəyişənlər
external_ip: "192.168.1.100"
database_server: "db.example.com"

Bu ayırmanın üstünlükləri:

  • Hierarxiya və prioritet: Dəyişənlərin tətbiqində aydın hierarxiya təmin edilir (host_vars, group_vars-dan daha yüksək prioritetə malikdir; müəyyən bir qrup üçün group_vars, all üçün group_vars-dan daha yüksək prioritetə malikdir).
  • Təkrar istifadə: Ümumi tənzimləmələr group_varsdə bir dəfə müəyyən edilə bilər və çox sayda hosta tətbiq oluna bilər.
  • Oxunaqlıq və idarəetmə: Konfiqurasiya daha anlaşılan və asan saxlanılır, çünki xüsusi və ümumi tənzimləmələr ayrılmışdır.
  • Təhlükəsizlik: Həssas və xüsusi məlumatlar (məsələn, şifrələr və ya xüsusi host üçün açarlar) host_vars-da saxlanıla və lazım gəldikdə şifrələnə bilər.

Digər alətlər kontekstində (məsələn, Terraform ilə .tfvars faylları və ya tətbiq konfiqurasiya faylları), ümumi və mühitə/instansiyaya aid dəyişənlərin ayrılması prinsipi qorunur, baxmayaraq ki, qovluq adları fərqli ola bilər. Məsələn, Terraform-da tez-tez terraform.tfvars faylları (ümumi defoltlar üçün) və mühitə aid xüsusi fayllar dev.tfvars, stage.tfvars, prod.tfvars istifadə olunur.

Əsas fikir — dəyişməz "ümumi" parametrləri və dəyişən "mühit" və ya "host" parametrlərini ayırmaq, konfiqurasiya idarəetməsini sadələşdirməkdir.