Sobes.tech
Middle

DevOps roli uchun nima uchun ikkita o'zgaruvchilar papkasi kerak va ular qanday?

sobes.tech AI

AIdan javob

DevOps rolida, odatda, umumiy va muhitga (atrof-muhitga) oid sozlamalarni ajratish uchun ikkita o'zgaruvchilar papkasi ishlatiladi. Bu konfiguratsiyalarni moslashuvchanligini, qayta ishlatishni va xavfsizligini oshiradi.

Ikki asosiy papka:

  1. group_vars: Belirli bir inventar guruhidagi barcha hostlarga qo'llaniladigan o'zgaruvchilarni o'z ichiga oladi. Bu fayllardan olingan o'zgaruvchilar, fayl nomiga mos keladigan guruhdagi hostlarga qo'llaniladi (masalan, group_vars/web_servers.yaml) yoki group_vars/all.yaml faylida (hamma hostlarga qo'llaniladi). Bu, serverlar guruh uchun umumiy sozlamalarni belgilash uchun qulay (masalan, tarmoq sozlamalari, o'rnatish yo'llari).
  2. host_vars: Bitta host uchun maxsus o'zgaruvchilarni o'z ichiga oladi. Bu fayllardan olingan o'zgaruvchilar faqat ma'lum bir hostga qo'llaniladi, uning nomi fayl nomiga mos keladi (masalan, host_vars/server1.example.com.yaml). Maxsus host sozlamalari uchun ishlatiladi (masalan, aniq interfeys IP manzillari, dastur versiyalari, maxsus kirishlar).

Ansible bilan ishlashda katalog tuzilmasiga misol:

# O'zgaruvchilar bilan katalog tuzilmasi
.
├── inventory  # Inventar fayli yoki katalogi
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # Hamma hostlar uchun o'zgaruvchilar
│   └── web_servers.yaml # web_servers guruh uchun o'zgaruvchilar
└── host_vars
    ├── server1.example.com.yaml # server1 uchun o'zgaruvchilar
    └── server2.example.com.yaml # server2 uchun o'zgaruvchilar

Fayllar mazmuniga misol:

// group_vars/all.yaml
---
# Hamma hostlar uchun umumiy o'zgaruvchilar
tz: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# web_servers guruh uchun o'zgaruvchilar
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# server1 uchun maxsus o'zgaruvchilar
external_ip: "192.168.1.100"
database_server: "db.example.com"

Bunday ajratishning afzalliklari:

  • Hierarxiya va prioritet: O'zgaruvchilarning qo'llanilishida aniq hierarxiya ta'minlanadi (host_vars, group_vars'dan yuqori prioritetga ega; ma'lum bir guruh uchun group_vars, all uchun group_vars'dan yuqori prioritetga ega).
  • Qayta ishlatish: Umumiy sozlamalar group_varsda bir marta belgilanishi va ko'plab hostlarga qo'llanilishi mumkin.
  • O'qilishi va boshqarilishi: Konfiguratsiya tushunarliroq va osonroq saqlanadi, chunki maxsus va umumiy sozlamalar ajratilgan.
  • Xavfsizlik: Maxsus sezgir ma'lumotlar (masalan, parollar yoki kalitlar) host_varsda saqlanishi va alohida shifrlanishi mumkin, agar kerak bo'lsa.

Boshqa vositalar kontekstida (masalan, Terraform bilan .tfvars fayllari yoki ilova konfiguratsiya fayllari), umumiy va muhit/instansiya uchun maxsus o'zgaruvchilarni ajratish tamoyili saqlanadi, garchi katalog nomlari farq qilishi mumkin. Masalan, Terraformda odatda terraform.tfvars fayllari (umumiy standartlar uchun) va muhitga oid maxsus fayllar dev.tfvars, stage.tfvars, prod.tfvars ishlatiladi.

Asosiy g'oya — o'zgarmas "umumiy" parametrlarni va o'zgaruvchan "muhit" yoki "host" parametrlarini ajratish, konfiguratsiya boshqaruvini soddalashtirishdir.