Middle
DevOpsning turli rollarida o'zgaruvchilar hierarxiyasi qanday?
sobes.tech AI
AIdan javob
Ansible'da o'zgaruvchilar qat'iy ustuvorliklar hierarxiyasiga ega. Ansible turli manbalardan o'zgaruvchilarni birlashtiradi va pastroq ustuvorlikdagi qiymatlarni yuqori ustuvorlikdagi qiymatlar bilan yozib qo'yadi.
Hierarxiya (eng pastdan eng yuqori ustuvorlikgacha):
- Rolning standart qiymatlari (Role defaults):
defaults/main.ymlichida rol ichida belgilangan o'zgaruvchilar. Ular eng past ustuvorlikka ega bo'lib, osonlik bilan yozib qo'yilishi mumkin bo'lgan standart qiymatlarni belgilash uchun mo'ljallangan. - Rol katalogidagi o'zgaruvchilar (Role vars):
vars/main.ymlichida rol ichida belgilangan o'zgaruvchilar. Ular standart qiymatlardan yuqori ustuvorlikka ega. - Inventar o'zgaruvchilari (Inventory variables):
- Global inventar o'zgaruvchilari (
group_vars/all/host_vars/allyoki asosiy inventar fayli). - Guruh o'zgaruvchilari (
group_vars/<guruh_nomi>). Ustuvorlik inventar va playbookdagi guruhlar tartibiga bog'liq, lekin odatda chuqurroq yoki keyinroq belgilangan guruhlar yuqori ustuvorlikka ega. - Inventar hostining o'zgaruvchilari (
host_vars/<host_nomi>yoki asosiy inventar fayli). Ular guruh o'zgaruvchilaridan yuqori ustuvorlikka ega.
- Global inventar o'zgaruvchilari (
- Play o'zgaruvchilari (Play variables): To'g'ridan-to'g'ri
varsbo'limida belgilangan o'zgaruvchilar. - Play_hosts
vars_fileso'zgaruvchilari (Play vars_files):vars_filesorqali yuklangan o'zgaruvchilar. Ularning ro'yxatga olish tartibi ustuvorlikni belgilaydi. - Faktlar (Facts):
gather_factsmodulini bajarilgandan so'ng yig'ilgan o'zgaruvchilar. Ular yuqori ustuvorlikka ega, chunki ular tizimning hozirgi holatini ifodalaydi. - Ro'yxatga olingan vazifalar o'zgaruvchilari (Task variables):
registerorqali vazifa bajarilgandan so'ng o'rnatilgan o'zgaruvchilar. Ular yuqori ustuvorlikka ega va faqat joriy playda vazifa bajarilgandan so'ng mavjud. - Buyruq satri o'zgaruvchilari (Command line variables):
-eyoki--extra-varsbayrog'i bilanansible-playbookni ishga tushirishda uzatilgan o'zgaruvchilar. Ular eng yuqori ustuvorlikka ega va barcha boshqa o'zgaruvchilarni yozib qo'yadi.
O'zgaruvchilar bilan misol playbook:
---
# main.yml
- hosts: webservers
vars:
global_var: "global_value_from_play" # Play o'zgaruvchisi (ustuvorlik 4)
roles:
- webservers # `defaults/main.yml` va `vars/main.yml` bilan rol (ustuvorlik 1 va 2)
tasks:
- name: O'zgaruvchini chiqarish
debug:
msg: "O'zgaruvchining qiymati: {{ my_variable }}"
vars: # Vazifa o'zgaruvchisi (ustuvorlik 7)
my_variable: "task_specific_value"
Inventar misoli:
# inventar
[webservers]
webserver1 ansible_host=192.168.1.10 # Host o'zgaruvchisi (ustuvorlik 3)
[all:vars]
my_variable="inventory_all_value" # Umumiy inventar o'zgaruvchisi (ustuvorlik 3)
Rol defaults misoli:
# roles/webservers/defaults/main.yml
---
my_variable: "default_value_from_role" # Rolning defaults o'zgaruvchisi (ustuvorlik 1)
Rol vars misoli:
# roles/webservers/vars/main.yml
---
my_variable: "vars_value_from_role" # Rol vars (ustuvorlik 2)
ansible-playbook -i inventory main.yml -e "my_variable=extra_vars_value" ni ishga tushirganda:
-edan qiymat ishlatiladi:extra_vars_value(ustuvorlik 8).- Agar
-emavjud bo'lmasa, lekin vazifa o'zgaruvchisi mavjud bo'lsa, u ishlatiladi:task_specific_value(ustuvorlik 7). - Agar vazifa o'zgaruvchisi va
-emavjud bo'lmasa, fakt (agar mavjud bo'lsa) ishlatiladi. - Keyin, play o'zgaruvchisi:
global_value_from_play(ustuvorlik 4). - Keyin, inventar hostining o'zgaruvchisi:
ansible_host=192.168.1.10(ustuvorlik 3). - Keyin, inventar guruhining o'zgaruvchisi (
group_varsyoki inventarda). - Keyin, umumiy inventar o'zgaruvchisi:
inventory_all_value(ustuvorlik 3). - Keyin, rol vars o'zgaruvchisi:
vars_value_from_role(ustuvorlik 2). - Nihoyat, rol defaults o'zgaruvchisi:
default_value_from_role(ustuvorlik 1).
Ansible bu hierarxiyadan eng yuqori ustuvorlikdagi birinchi qiymatni oladi. Bu hierarxiyani tushunish debugging va konfiguratsiyani to'g'ri boshqarish uchun muhimdir.