# group_vars और host_vars — Ansible: Playbooks से Servers का Automation

Source: https://www.geekswithgeeks.com/hi/ansible/var-group-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 में रहते हैं।

```text
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 एक-सी रहती है; सिर्फ़ डेटा बदलता है।

**Quiz:** सिर्फ़ web group पर लागू variables कहाँ रखें?

- [ ] सिर्फ़ ansible.cfg
- [x] group_vars/web.yml
- [ ] कोई भी hosts फ़ाइल
- [ ] Playbook में comment

*Answer:* group_vars/web.yml. Ansible उस group के hosts के लिए group_vars/<group>.yml अपने आप लोड करता है।
