Sobes.tech
Middle

Prečo v úlohe DevOps sú potrebné dva priečinky s premennými a aké sú?

sobes.tech AI

Odpoveď od AI

Ako je to úloha DevOps, zvyčajne sa používajú dva priečinky s premennými na oddelenie všeobecných a špecifických pre prostredie (prostredie) nastavení. To zvyšuje flexibilitu, opätovnú použiteľnosť a bezpečnosť konfigurácií.

Dva hlavné priečinky:

  1. group_vars: Obsahuje premenné, ktoré sa používajú pre všetky hosty v určitej skupine inventára. Premenné z týchto súborov sa aplikujú na hosty zahrnuté v skupine, ktorej názov zodpovedá názvu súboru (napríklad group_vars/web_servers.yaml) alebo v súbore group_vars/all.yaml (platí pre všetky hosty). Je to pohodlné na definovanie všeobecných nastavení skupiny serverov (napríklad sieťové nastavenia, cesty inštalácie).
  2. host_vars: Obsahuje premenné špecifické pre jednotlivé hosty. Premenné z týchto súborov sa používajú iba pre konkrétny host, ktorého názov zodpovedá názvu súboru (napríklad host_vars/server1.example.com.yaml). Používa sa na jedinečné nastavenia hostov (napríklad IP adresy konkrétneho rozhrania, verzie softvéru, špecifické prístupy).

Príklad štruktúry adresárov pri použití Ansible:

# Štruktúra adresárov s premennými
.
├── inventory  # Súbor alebo adresár inventára
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # Všeobecné premenné pre všetky hosty
│   └── web_servers.yaml # Premenné pre skupinu webových serverov
└── host_vars
    ├── server1.example.com.yaml # Premenné pre hosta server1
    └── server2.example.com.yaml # Premenné pre hosta server2

Príklad obsahu súborov:

// group_vars/all.yaml
---
# Všeobecné premenné pre všetky hosty
tz: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# Premenné pre skupinu webových serverov
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# Špecifické premenné pre server1
external_ip: "192.168.1.100"
database_server: "db.example.com"

Výhody takéhoto rozdelenia:

  • Hierarchia a priorita: Zabezpečuje jasnú hierarchiu použitia premenných (host_vars majú vyššiu prioritu ako group_vars, a group_vars pre konkrétnu skupinu majú vyššiu prioritu ako group_vars/all).
  • Opätovná použiteľnosť: Všeobecné nastavenia môžu byť definované raz v group_vars a aplikované na viac hostov.
  • Čitateľnosť a spravovateľnosť: Konfigurácia sa stáva ľahšie zrozumiteľnou a ľahko udržiavateľnou, pretože špecifické a všeobecné nastavenia sú oddelené.
  • Bezpečnosť: Citlivé špecifické údaje (napríklad heslá alebo kľúče pre konkrétny host) môžu byť uložené v host_vars a byť šifrované samostatne, ak je to potrebné.

V kontexte iných nástrojov (napríklad Terraform s použitím .tfvars súborov alebo konfiguračných súborov aplikácií) sa princíp rozdeľovania na všeobecné a špecifické pre prostredie/inštanciu premenné zachováva, hoci názvy priečinkov sa môžu líšiť. Napríklad v Terraform sa často používajú súbory typu terraform.tfvars (pre všeobecné predvolené hodnoty) a špecifické súbory pre prostredia ako dev.tfvars, stage.tfvars, prod.tfvars.

Hlavná myšlienka — rozdeliť nemenné "všeobecné" parametre od meniteľných "prostredí- alebo hostiteľských" parametrov, aby sa uľahčila správa konfigurácie.