Sobes.tech
Middle

Jaká je hierarchie proměnných v různých rolích DevOps?

sobes.tech AI

Odpověď od AI

Hierarchie proměnných v DevOps se obvykle vztahuje na systémy správy konfigurace, jako jsou Ansible, Puppet nebo Chef, kde různé úrovně definice proměnných mají různý prioritu. V kontextu Ansible to vypadá takto:

  1. Extra Vars (z příkazového řádku s -e)
  2. Lookup proměnné (například pomocí {{ lookup(...) }})
  3. Vyhrazené proměnné (předdefinované proměnné Ansible, jako hostvars, group_names, inventory_hostname)
  4. Proměnné inventáře
    • Skupinové proměnné (group_vars/)
    • Proměnné hostitele (host_vars/)
  5. Proměnné role (roles/<role_name>/vars/)
  6. Proměnné playbooku (vars: v playbooku)
  7. Výchozí hodnoty role (roles/<role_name>/defaults)
  8. Proměnné inventáře (ze souboru inventáře)
    • Skupinové proměnné v inventáři
    • Proměnné hostitele v inventáři

Příklad definice proměnných v Ansible pro roli:

---
# roles/my_role/vars/main.yml
my_variable: "hodnota nastavená v proměnných role"

Příklad výchozích hodnot pro roli:

---
# roles/my_role/defaults/main.yml
my_variable: "výchozí hodnota"
another_variable: "specifická výchozí hodnota pro roli"

Příklad použití v playbooku:

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

Příklad proměnné hostitele v inventáři:

[my_servers]
server1 my_variable="hodnota z inventáře hostitele"
server2

Proměnné definované na vyšší úrovni v této hierarchii (například Extra Vars) přepisují proměnné definované na nižší úrovni (například výchozí hodnoty role). V jiných nástrojích se hierarchie může lišit, ale obecný princip priority proměnných, které jsou definovány blíže místu použití nebo s explicitním označením (například v příkazovém řádku), zůstává podobný.