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:
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říkladgroup_vars/web_servers.yaml) nebo v souborugroup_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).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říkladhost_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_varsa 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_varsa 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.