पाठ 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 अपने आप लोड करता है।