Sobes.tech
Middle

Miért van két mappa változó a DevOps szerepben, és mik azok?

sobes.tech MI

Válasz az MI-től

DevOps szerepében általában két változókat tartalmazó mappát használnak a közös és a környezet-specifikus (környezet) beállítások elkülönítésére. Ez növeli a konfigurációk rugalmasságát, újrahasznosíthatóságát és biztonságát.

Két fő mappa:

  1. group_vars: Tartalmazza azokat a változókat, amelyek minden gazdagépre alkalmazhatók egy adott csoportban. Ezek a fájlokból származó változók alkalmazhatók a csoportba tartozó gazdagépekre, melynek neve megegyezik a fájl nevével (pl. group_vars/web_servers.yaml) vagy a group_vars/all.yaml fájlból (minden gazdagépre alkalmazható). Ez kényelmes a közös beállítások meghatározására a szervercsoport számára (pl. hálózati beállítások, telepítési útvonalak).
  2. host_vars: Tartalmazza az egyes gazdagépekhez tartozó változókat. Ezek a fájlok csak az adott gazdagépre alkalmazhatók, melynek neve megegyezik a fájl nevével (pl. host_vars/server1.example.com.yaml). Egyedi beállításokra használják a gazdagépeknél (pl. IP-címek, szoftververziók, speciális hozzáférések).

Példa a könyvtárstruktúrára az Ansible használatakor:

# Változók könyvtárszerkezete
.
├── inventory  # Inventory fájl vagy könyvtár
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # Minden gazdagépre vonatkozó változók
│   └── web_servers.yaml # Web szerver csoport változói
└── host_vars
    ├── server1.example.com.yaml # Server1 változói
    └── server2.example.com.yaml # Server2 változói

Fájl tartalom példák:

// group_vars/all.yaml
---
# Minden gazdagépre vonatkozó általános változók
tz: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# Web szerver csoport változói
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# Egyedi változók a server1-hez
external_ip: "192.168.1.100"
database_server: "db.example.com"

Az ilyen megosztás előnyei:

  • Hierarchia és prioritás: Egyértelmű hierarchia biztosított a változók alkalmazásában (host_vars magasabb prioritású, mint a group_vars, és a csoporton belüli group_vars magasabb, mint a group_vars/all).
  • Újrahasznosíthatóság: A közös beállításokat egyszer lehet meghatározni a group_vars-ban, és több gazdagépre alkalmazni.
  • Átláthatóság és kezelhetőség: A konfiguráció könnyebben érthető és karbantartható, mivel a speciális és általános beállítások elkülönülnek.
  • Biztonság: Az érzékeny adatok (pl. jelszavak vagy kulcsok) tárolhatók a host_vars-ban, és külön titkosíthatók, ha szükséges.

Más eszközök (pl. Terraform .tfvars fájlok vagy alkalmazás konfigurációs fájlok) esetében is megmarad az elv, bár a könyvtárnevek eltérhetnek. Például a Terraformban gyakran használnak terraform.tfvars fájlokat (általános alapértelmezett értékekhez) és környezet-specifikus fájlokat, mint például dev.tfvars, stage.tfvars, prod.tfvars.

Az alapötlet — elkülöníteni a változatlan "általános" paramétereket a változó "környezet- vagy gazdagép-specifikus" paraméterektől, hogy egyszerűbbé tegyék a konfiguráció kezelését.