Sobes.tech
Middle

Kāpēc DevOps lomā ir nepieciešamas divas mainīgo mapes un kādas tās ir?

sobes.tech AI

Atbilde no AI

Kā DevOps bieži izmanto divas mainīgo mapes, lai atdalītu kopējās un vides (vides) specifiskās konfigurācijas. Tas uzlabo konfigurāciju elastību, atkārtotu izmantošanu un drošību.

Divas galvenās mapes:

  1. group_vars: Satur mainīgos, kas tiek piemēroti visiem hostiem noteiktā inventāra grupā. Šie mainīgie tiek piemēroti hostiem, kas ir iekļauti grupā, kuras nosaukums sakrīt ar faila nosaukumu (piemēram, group_vars/web_servers.yaml) vai failā group_vars/all.yaml (tiek piemērots visiem hostiem). Tas ir ērti, lai definētu kopējas iestatījumus serveru grupai (piemēram, tīkla iestatījumi, instalācijas ceļi).
  2. host_vars: Satur mainīgos, kas ir specifiski katram atsevišķam hostam. Šie mainīgie tiek piemēroti tikai konkrētam hostam, kura nosaukums sakrīt ar faila nosaukumu (piemēram, host_vars/server1.example.com.yaml). Tiek izmantoti unikāli iestatījumi hostiem (piemēram, konkrēta interfeisa IP adrese, programmatūras versija, specifiski piekļuves dati).

Ansible izmantošanas piemērs direktoriju struktūrai:

# Mainīgo direktoriju struktūra
.
├── inventory  # Inventāra fails vai direktorija
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # Visu hostu kopējie mainīgie
│   └── web_servers.yaml # Mainīgie web_serveru grupai
└── host_vars
    ├── server1.example.com.yaml # Mainīgie serverim server1
    └── server2.example.com.yaml # Mainīgie serverim server2

Failu piemēri:

// group_vars/all.yaml
---
# Kopējie mainīgie visiem hostiem
timezone: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# Mainīgie web_serveru grupai
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# Specifiskie mainīgie serverim server1
external_ip: "192.168.1.100"
database_server: "db.example.com"

Šāda sadalījuma priekšrocības:

  • Hierarhija un prioritāte: Nodrošina skaidru mainīgo piemērošanas hierarhiju (host_vars ir prioritātes augstākas nekā group_vars, un group_vars konkrētai grupai ir prioritātes augstākas nekā group_vars/all).
  • Atkārtota izmantošana: Kopējie iestatījumi var tikt definēti vienreiz group_vars un piemēroti daudzām mašīnām.
  • Lasāmība un pārvaldība: Konfigurācija kļūst saprotamāka un vieglāk uzturama, jo specifiskie un kopīgie iestatījumi ir atdalīti.
  • Drošība: Svarīgiem un specifiskiem datiem (piemēram, paroles vai atslēgas) var tikt glabāti host_vars un šifrēti atsevišķi, ja nepieciešams.

Citu rīku kontekstā (piemēram, Terraform ar .tfvars failiem vai lietojumprogrammu konfigurācijas failiem) princips par kopēju un specifisku mainīgo sadalījumu saglabājas, tikai direktoriju nosaukumi var atšķirties. Piemēram, Terraform bieži izmanto terraform.tfvars kopējiem iestatījumiem un specifiskus failus vidiem, piemēram, dev.tfvars, stage.tfvars, prod.tfvars.

Galvenā ideja ir atdalīt nemainīgos "kopīgos" parametrus no mainīgajiem "vides" vai "servera" parametriem, lai vienkāršotu konfigurācijas pārvaldību.