Sobes.tech
Middle

Aká je hierarchia premenných v rôznych rolách DevOps?

sobes.tech AI

Odpoveď od AI

Hierarchia premenných v DevOps zvyčajne odkazuje na systémy správy konfigurácie, ako sú Ansible, Puppet alebo Chef, kde rôzne úrovne definície premenných majú rôzny prioritu. V kontexte Ansible to vyzerá takto:

  1. Extra Vars (z príkazového riadku s -e)
  2. Lookup premenné (napríklad pomocou {{ lookup(...) }})
  3. Vyhradené premenné (preddefinované premenné Ansible, ako hostvars, group_names, inventory_hostname)
  4. Premenné inventára
    • Skupinové premenné (group_vars/)
    • Host premenné (host_vars/)
  5. Premenné roly (roles/<role_name>/vars/)
  6. Premenné hry (vars: v playbooku)
  7. Predvolené hodnoty roly (roles/<role_name>/defaults)
  8. Premenné inventára (z inventárneho súboru)
    • Skupinové premenné v inventári
    • Host premenné v inventári

Príklad definície premenných v Ansible pre rolu:

---
# roles/my_role/vars/main.yml
my_variable: "hodnota nastavená v vars role"

Príklad definície predvolených hodnôt pre rolu:

---
# roles/my_role/defaults/main.yml
my_variable: "predvolená hodnota"
another_variable: "špecifická predvolená hodnota pre rolu"

Príklad použitia v playbooku:

---
- name: Aplikovať my_role
  hosts: my_servers
  vars:
    my_variable: "hodnota nastavená v playbooku"
  roles:
    - my_role

Príklad hostovej premennej v inventári:

[my_servers]
server1 my_variable="hodnota z inventárneho hosta"
server2

Premenné definované na vyššej úrovni v tejto hierarchii (napríklad Extra Vars) prepíšu premenné definované na nižšej úrovni (napríklad predvolené hodnoty roly). V iných nástrojoch sa hierarchia môže líšiť, ale všeobecný princíp priorít premenných, definovaných bližšie k miestu použitia alebo s explicitným označením (napríklad v príkazovom riadku), zostáva podobný.