Sobes.tech
Middle

Proč jsou v roli DevOps potřeba dva složky s proměnnými a jaké jsou?

sobes.tech AI

Odpověď od AI

Jako DevOps se obvykle používají dva adresáře s proměnnými k oddělení obecných a specifických pro prostředí (prostředí) nastavení. To zvyšuje flexibilitu, znovupoužitelnost a bezpečnost konfigurací.

Dva hlavní adresáře:

  1. group_vars: Obsahuje proměnné, které se používají pro všechny hosty v určité skupině inventáře. Proměnné z těchto souborů se aplikují na hosty zahrnuté ve skupině, jejíž název odpovídá názvu souboru (například group_vars/web_servers.yaml) nebo v souboru group_vars/all.yaml (platí pro všechny hosty). Je to pohodlné pro definování obecných nastavení skupiny serverů (například síťové nastavení, cesty instalace).
  2. host_vars: Obsahuje proměnné specifické pro jednotlivé hosty. Proměnné z těchto souborů se používají pouze pro konkrétní host, jehož název odpovídá názvu souboru (například host_vars/server1.example.com.yaml). Používá se pro jedinečná nastavení hostů (například IP adresy konkrétního rozhraní, verze softwaru, specifické přístupy).

Příklad struktury adresářů při použití Ansible:

# Struktura adresářů s proměnnými
.
├── inventory  # Soubor nebo adresář inventáře
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # Obecné proměnné pro všechny hosty
│   └── web_servers.yaml # Proměnné pro skupinu webových serverů
└── host_vars
    ├── server1.example.com.yaml # Proměnné pro hosta server1
    └── server2.example.com.yaml # Proměnné pro hosta server2

Příklad obsahu souborů:

// group_vars/all.yaml
---
# Obecné proměnné pro všechny hosty
tz: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# Proměnné pro skupinu webových serverů
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# Specifické proměnné pro server1
external_ip: "192.168.1.100"
database_server: "db.example.com"

Výhody takového rozdělení:

  • Hierarchie a priorita: Zajišťuje jasnou hierarchii použití proměnných (host_vars mají vyšší prioritu než group_vars, a group_vars pro konkrétní skupinu mají vyšší prioritu než group_vars/all).
  • Znovupoužitelnost: Obecné nastavení lze definovat jednou v group_vars a použít na více hostech.
  • Čitelnost a spravovatelnost: Konfigurace je srozumitelnější a snadno udržovatelná, protože specifické a obecné nastavení jsou oddělené.
  • Bezpečnost: Citlivá specifická data (například hesla nebo klíče pro konkrétní hosty) mohou být uložena v host_vars a případně zašifrována, pokud je to nutné.

V kontextu jiných nástrojů (například Terraform s použitím .tfvars souborů nebo konfiguračních souborů aplikací) se princip oddělení obecných a specifických proměnných zachovává, i když se mohou lišit názvy adresářů. Například v Terraform se často používají soubory typu terraform.tfvars (pro obecné výchozí hodnoty) a specifické soubory pro prostředí jako dev.tfvars, stage.tfvars, prod.tfvars.

Hlavní myšlenka je oddělit neměnné "obecné" parametry od měnitelných "prostředí- nebo hostitelských" parametrů, což usnadňuje správu konfigurace.