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:
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ə yagroup_vars/all.yamlfaylı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ı).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.