# Inventory: Hosts और Groups — Ansible: Playbooks से Servers का Automation

Source: https://www.geekswithgeeks.com/hi/ansible/ans-inventory

> INI inventory में hosts, groups, groups के groups और group variables वर्णित करें।

## Ansible को बताएँ क्या मौजूद है

**Inventory** उन hosts की सूची देता है जिन्हें Ansible सँभालता है और उन्हें **groups** में व्यवस्थित करता है ताकि आप उन्हें साथ लक्षित कर सकें (`web`, `db`, `prod`)। Group में `:children` से दूसरे groups हो सकते हैं, और `:vars` group से variables जोड़ता है। Inventory INI या YAML files, या cloud provider से पढ़ने वाली **dynamic** scripts/plugins हो सकती हैं। Ansible आपकी inventory को कैसे समझता है यह देखने के लिए `ansible-inventory --graph` उपयोग करें।

## INI inventory

`ansible_connection=local` सिर्फ़ इस डेमो के लिए है। असली servers के लिए उनके hostnames या IPs और SSH उपयोग करें।

```ini
[web]
web1 ansible_connection=local
web2 ansible_connection=local

[db]
db1 ansible_connection=local

[prod:children]
web
db

[web:vars]
http_port=8080
```

## Ansible इसे कैसे देखता है

मैंने ऊपर की फ़ाइल पर `ansible-inventory -i inventory.ini --graph` चलाया। `web` और `db`, `prod` के भीतर हैं।

```bash
ansible-inventory -i inventory.ini --graph
```

Output:

```
@all:
  |--@ungrouped:
  |--@prod:
  |  |--@web:
  |  |  |--web1
  |  |  |--web2
  |  |--@db:
  |  |  |--db1
```

**Quiz:** INI inventory में `[prod:children]` क्या करता है?

- [ ] Group को encrypt करता है
- [ ] prod group हटाता है
- [ ] children नाम का नया host बनाता है
- [x] सूचीबद्ध groups को prod का सदस्य बनाता है

*Answer:* सूचीबद्ध groups को prod का सदस्य बनाता है. :children प्रत्यय का मतलब है कि प्रविष्टियाँ parent के अधीन groups हैं।
