Middle
Milline on muutujate hierarhia erinevates DevOps rollides?
sobes.tech AI
Vastus AI-lt
Ansible muutujatel on range ja hierarhiline prioriteet. Ansible ühendab muutujad erinevatest allikatest, üle kirjutades madalama prioriteediga väärtused kõrgema prioriteediga väärtustega.
Hierarhia (madalamast kõrgemani):
- Rolli vaikeväärtused (Role defaults): Muutujad, mis on määratletud
defaults/main.ymlfailis rollis. Neil on kõige madalam prioriteet, mõeldud vaikeseadete määramiseks ning neid on lihtne üle kirjutada. - Rolli muutujad (Role vars): Muutujad, mis on määratletud
vars/main.ymlfailis rollis. Neil on kõrgem prioriteet kui vaikeseadetel. - Inventari muutujad (Inventory variables):
- Globaalsetel inventari muutujatel (
group_vars/all/host_vars/allvõi peamisel inventari failil). - Rühma muutujad (
group_vars/<group_name>). Prioriteet sõltub rühmade järjekorrast ja playbookist, kuid tavaliselt on sügavamalt või hiljem määratletud rühmad kõrgema prioriteediga. - Hosti muutujad (
host_vars/<host_name>või peamisel inventari failil). Neil on kõrgem prioriteet kui rühma muutujatel.
- Globaalsetel inventari muutujatel (
- Play muutujad (Play variables): Muutujad, mis on määratletud otse
varssektsioonis playbookis. - Play_hosts muutujad (Play vars_files): Muutujad, mis on laaditud
vars_fileskaudu. Nende järjestus määrab prioriteedi. - Faktid (Facts): Muutujad, mis on kogutud pärast
gather_factsmooduli täitmist. Neil on kõrge prioriteet, kuna nad esindavad süsteemi praegust seisundit. - Ülesannete registreeritud muutujad (Task variables): Muutujad, mis on määratletud
registerkaudu ülesande täitmisel. Neil on kõrge prioriteet ning need on saadaval ainult jooksva playbooki jooksul. - Käsurea muutujad (Command line variables): Muutujad, mis edastatakse
-evõi--extra-varslipugaansible-playbookkäivitamisel. Neil on kõrgeim prioriteet ning need üle kirjutavad kõik teised muutujad.
Näide muutujatega playbookist:
---
# main.yml playbook
- hosts: webservers
vars:
global_var: "global_value_from_play" # Playbooki muutuja (prioriteet 4)
roles:
- webservers # Roll koos defaults/main.yml ja vars/main.yml (prioriteet 1 ja 2)
tasks:
- name: Print variable
debug:
msg: "Variable value is: {{ my_variable }}"
vars: # Ülesande muutuja (prioriteet 7)
my_variable: "task_specific_value"
Inventari näide:
# inventar
[webservers]
webserver1 ansible_host=192.168.1.10 # Hosti muutuja (prioriteet 3)
[all:vars]
my_variable="inventory_all_value" # Globaalne inventari muutuja (prioriteet 3)
Rolli defaults näide:
# roles/webservers/defaults/main.yml
---
my_variable: "default_value_from_role" # Rolli defaults muutuja (prioriteet 1)
Rolli vars näide:
# roles/webservers/vars/main.yml
---
my_variable: "vars_value_from_role" # Rolli vars muutuja (prioriteet 2)
Kui käivitatakse ansible-playbook -i inventory main.yml -e "my_variable=extra_vars_value":
- Kasutatakse
-eväärtust:extra_vars_value(prioriteet 8). - Kui
-epuudub, kuid on ülesande muutuja, kasutatakse seda:task_specific_value(prioriteet 7). - Kui ei
-eega ülesande muutuja, kasutatakse fakti (kui sobib). - Seejärel, playbooki muutuja:
global_value_from_play(prioriteet 4). - Seejärel, hosti muutuja:
ansible_host=192.168.1.10(prioriteet 3). - Seejärel, rühma muutuja (inventari või rühma põhjal).
- Seejärel, globaalne inventari muutuja:
inventory_all_value(prioriteet 3). - Seejärel, rolli vars:
vars_value_from_role(prioriteet 2). - Lõpuks, rolli defaults:
default_value_from_role(prioriteet 1).
Ansible võtab esimese leitud väärtuse kõrgeima prioriteediga. Selle hierarhia mõistmine on oluline vigade vältimiseks ja konfiguratsiooni õige haldamise jaoks.