# Collections और Ansible Galaxy — Ansible: Playbooks से Servers का Automation

Source: https://www.geekswithgeeks.com/hi/ansible/role-collections-galaxy

> साझा सामग्री install करें और requirements फ़ाइल से versions pin करें।

## दोबारा न गढ़ें

आधुनिक Ansible सामग्री **collections** के रूप में बाँटी जाती है: modules, plugins और roles के बंडल, जिनके नाम `namespace.collection` होते हैं (जैसे `community.general` या `amazon.aws`)। **Ansible Galaxy** और Red Hat का Automation Hub उन्हें होस्ट करते हैं। अपने project की ज़रूरतें versions के साथ **`requirements.yml`** में लिखें और `ansible-galaxy collection install -r requirements.yml` से install करें, ताकि हर developer और CI job एक-सी सामग्री उपयोग करे। तृतीय-पक्ष roles उपयोग से पहले review करें, क्योंकि वे आपके अधिकारों से चलते हैं।

## requirements.yml

Versions pin करने से runs दोहराने योग्य होते हैं। यहाँ के version संख्याएँ उदाहरण हैं।

```yaml
---
collections:
  - name: community.general
    version: ">=9.0.0,<10.0.0"
  - name: ansible.posix
roles:
  - name: geerlingguy.nginx
    version: "3.2.0"
```

## Module docs स्थानीय रूप से देखें

`ansible-doc ansible.builtin.copy` आपके install किए सटीक module version का दस्तावेज़, उदाहरणों समेत, बिना internet दिखाता है।

**Quiz:** requirements.yml में collection versions pin क्यों करें?

- [ ] वरना collections install नहीं हो सकते
- [ ] Pin करने से modules तेज़ होते हैं
- [x] ताकि हर run एक-सी, दोहराने योग्य सामग्री उपयोग करे
- [ ] यह कोड छिपाता है

*Answer:* ताकि हर run एक-सी, दोहराने योग्य सामग्री उपयोग करे. बिना pin के updates runs के बीच अनपेक्षित रूप से व्यवहार बदल सकते हैं।
