Sobes.tech
Middle

Kodėl DevOps vaidmenyje reikalingos dvi kintamųjų aplankai ir kas jie yra?

sobes.tech AI

Atsakymas iš AI

Kaip DevOps, dažnai naudojamos dvi katalogų su kintamaisiais, skirtos bendriems ir specifiniams aplinkos (aplinkos) nustatymams atskirti. Tai didina lankstumą, pakartotinį naudojimą ir saugumą.

Dvi pagrindinės katalogai:

  1. group_vars: Saugo kintamuosius, taikomus visiems hostams tam tikroje inventoriaus grupėje. Šių failų kintamieji taikomi įtrauktiems į grupę hostams, kurios pavadinimas sutampa su failo pavadinimu (pvz., group_vars/web_servers.yaml) arba faile group_vars/all.yaml (taikoma visiems hostams). Tai patogu bendriems nustatymams apibrėžti serverių grupei (pvz., tinklo nustatymai, diegimo keliai).
  2. host_vars: Saugo specifinius kintamuosius atskiriems hostams. Šių failų kintamieji taikomi tik konkrečiam hostui, kurio pavadinimas sutampa su failo pavadinimu (pvz., host_vars/server1.example.com.yaml). Naudojama unikaliems hosto nustatymams (pvz., konkretaus sąsajos IP adresai, programinės įrangos versijos, specifiniai prieigos duomenys).

Pavyzdys katalogų struktūros naudojant Ansible:

# Katalogų struktūra su kintamaisiais
.
├── inventory  # Inventoriaus failas arba katalogas
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # Visų hostų bendri kintamieji
│   └── web_servers.yaml # Web serverių grupės kintamieji
└── host_vars
    ├── server1.example.com.yaml # serverio server1 kintamieji
    └── server2.example.com.yaml # serverio server2 kintamieji

Failų turinio pavyzdys:

// group_vars/all.yaml
---
# Visų hostų bendri kintamieji
tz: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# Web serverių grupės kintamieji
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# Unikalūs kintamieji serveriui server1
external_ip: "192.168.1.100"
database_server: "db.example.com"

Šio skirstymo privalumai:

  • Hierarchija ir prioritetas: Užtikrina aiškią kintamųjų taikymo hierarchiją (host_vars turi aukštesnį prioritetą nei group_vars, o konkrečios grupės group_vars turi aukštesnį prioritetą nei group_vars/all).
  • Pakartotinis naudojimas: Bendri nustatymai gali būti apibrėžti vieną kartą group_vars ir taikyti keliems hostams.
  • Skaitymas ir valdymas: Konfigūracija tampa aiškesnė ir lengviau prižiūrima, nes specifiniai ir bendri nustatymai yra atskirti.
  • Saugumas: Jautrūs specifiniai duomenys (pvz., slaptažodžiai ar raktai) gali būti saugomi host_vars ir šifruojami atskirai, jei reikia.

Kitu įrankių kontekste (pvz., Terraform su .tfvars failais ar programų konfigūracijų failais) bendrų ir specifinių aplinkos/inštancijos kintamųjų skirstymo principas išlieka, nors katalogų pavadinimai gali skirtis. Pavyzdžiui, Terraform dažnai naudoja terraform.tfvars failus (bendriems numatytiesiems nustatymams) ir specifinius failus aplinkai, pvz., dev.tfvars, stage.tfvars, prod.tfvars.

Pagrindinė idėja — atskirti nekintamus "bendrus" parametrus nuo kintamų "aplinkos" ar "hosto" parametrų, kad būtų lengviau valdyti konfigūraciją.