Middle
Ҳиерархияи тағйирёбандаҳо дар нақшҳои гуногуни DevOps чист?
sobes.tech AI
Ҷавоб аз AI
Променливҳо дар Ansible дорои ҳиерархияи қатъии афзалият мебошанд. Ansible променливҳоро аз манбаъҳои гуногун ҷамъ мекунад ва арзишҳоро бо арзишҳои бо афзалияти пасттар, бо арзишҳои бо афзалияти баландтар иваз мекунад.
Ҳиерархия (аз пасттарин то баландтарин):
- Пешфарзҳои нақш (Role defaults): Променливҳое, ки дар
defaults/main.ymlдар дохили нақш муайян шудаанд. Онҳо бо афзалияти пасттарин, барои таъин кардани арзишҳои пешфарзӣ, ки ба осонӣ иваз кардан мумкин аст, истифода мешаванд. - Променливҳо дар директорияи нақш (Role vars): Променливҳое, ки дар
vars/main.ymlдар дохили нақш муайян шудаанд. Онҳо афзалияти баландтар аз променливҳои пешфарзии нақш доранд. - Променливҳо аз инвентар (Inventory variables):
- Променливҳои глобалии инвентар (
group_vars/all/host_vars/allё дар файли асосии инвентар). - Променливҳои гурӯҳҳо (
group_vars/<номи-гурӯҳ>). Афзалият вобаста ба тартиби гурӯҳҳо дар инвентар ва плейбук, аммо одатан гурӯҳҳое, ки бо дарозии бештар ё дар охир муайян шудаанд, афзалияти баландтар доранд. - Променливҳои ҳостҳо (
host_vars/<номи-хост>ё дар файли асосии инвентар). Онҳо афзалияти баландтар аз гурӯҳҳои променлив доранд.
- Променливҳои глобалии инвентар (
- Променливҳо аз плей (Play variables): Променливҳое, ки мустақиман дар бахши
varsплейбук муайян шудаанд. - Променливҳо аз play_hosts (Play vars_files): Променливҳое, ки тавассути
vars_filesбор карда мешаванд. Тартиби зикр онҳо афзалиятро муайян мекунад. - Фактуҳо (Facts): Променливҳое, ки пас аз иҷрои модул
gather_factsҷамъоварӣ мешаванд. Онҳо афзалияти баланд доранд, зеро ҳолати ҳозираи системаро ифода мекунанд. - Променливҳои сабтшудаи вазифаҳо (Task variables): Променливҳое, ки тавассути
registerпас аз иҷрои вазифа муайян мешаванд. Онҳо афзалияти баланд доранд, танҳо дар доираи плейбукҳои ҳозира пас аз иҷрои вазифа дастрасанд. - Променливҳои хатти фармон (Command line variables): Променливҳое, ки бо истифода аз рамзи
-eё--extra-varsҳангоми оғоз карданиansible-playbookдода мешаванд. Онҳо баландтарин афзалият доранд ва ҳама променливҳоро иваз мекунанд.
Масали плейбук бо променливҳо:
---
# main.yml плейбук
- hosts: webservers
vars:
global_var: "арзиши глобалӣ аз play" # Променливи плейбук (афзалият 4)
roles:
- webservers # Нақш бо defaults/main.yml ва vars/main.yml (афзалият 1 ва 2)
tasks:
- name: Намоиши променлив
debug:
msg: "Арзиши променлив: {{ my_variable }}"
vars: # Променливи вазифа (афзалият 7)
my_variable: "махсус арзиши вазифа"
Масали инвентар:
# инвентар
[webservers]
webserver1 ansible_host=192.168.1.10 # Променливи ҳост (афзалият 3)
[all:vars]
my_variable="арзиши умумии инвентар" # Променливи умумии инвентар (афзалият 3)
Масали defaults барои нақш:
# roles/webservers/defaults/main.yml
---
my_variable: "арзиши пешфарз аз нақш" # Променливи defaults нақш (афзалият 1)
Масали vars барои нақш:
# roles/webservers/vars/main.yml
---
my_variable: "арзиши аз vars нақш" # Променливи vars нақш (афзалият 2)
Ҳангоми иҷрои ansible-playbook -i инвентар main.yml -e "my_variable=extra_vars_арзиш":
- Арзиши аз
-eистифода мешавад:extra_vars_арзиш(афзалият 8). - Агар
-eнабошад, аммо променливи вазифа вуҷуд дошта бошад, он истифода мешавад:забона_хос_арзиш(афзалият 7). - Агар променливи вазифа ва
-eнабошанд, факт истифода мешавад (агар имконпазир бошад). - Пас, променливи плей:
плей-аз_ҳолати_ҳозира(афзалият 4). - Пас, променливи ҳост аз инвентар:
ansible_host=192.168.1.10(афзалият 3). - Пас, променливи гурӯҳ аз инвентар (
group_varsё дар инвентар). - Пас, арзиши умумии инвентар:
арзиши умумии инвентар(афзалият 3). - Пас, променливи vars нақш:
vars_аз_нақш(афзалият 2). - Дар охир, променливи defaults нақш:
арзиши_пешфарз_аз_нақш(афзалият 1).
Ansible аввалин арзишро мегирад, ки бо баландтарин афзалият дар ин иерархия пайдо мешавад. Фаҳмидани ин иерархия барои хатоҳои ислоҳӣ ва идоракунии дурустии конфигуратсия муҳим аст.