पाठ 12 / 26
group_vars और host_vars
Variables को प्रति group और प्रति host साफ़ directory ढाँचे में रखें।
Inventory के पास variables
Variables को inventory फ़ाइल में ठूँसने की जगह उसके पास group_vars/<group>.yml और host_vars/<host>.yml बनाएँ। Ansible उन्हें अपने आप लोड करता है। group_vars/all.yml के variables हर जगह लागू होते हैं, group_vars/web.yml web group पर और host_vars/web1.yml सिर्फ़ उस host पर। इससे डेटा तर्क से अलग रहता है और code review में environment अंतर आसानी से दिखते हैं।
आम ढाँचा
Environment-विशिष्ट मान उस environment की inventory directory में रहते हैं।
inventories/
staging/
hosts.ini
group_vars/
all.yml # app_env: staging
web.yml # http_port: 8080
production/
hosts.ini
group_vars/
all.yml # app_env: production
web.yml # http_port: 80
playbooks/site.yml
roles/...एक playbook, कई environments
ansible-playbook -i inventories/staging site.yml चलाएँ और बाद में -i inventories/production। Playbook एक-सी रहती है; सिर्फ़ डेटा बदलता है।
त्वरित जाँच: सिर्फ़ web group पर लागू variables कहाँ रखें?
- सिर्फ़ ansible.cfg
- group_vars/web.yml
- कोई भी hosts फ़ाइल
- Playbook में comment
Answer
group_vars/web.yml — Ansible उस group के hosts के लिए group_vars/<group>.yml अपने आप लोड करता है।