# Check Mode और Diff — Ansible: Playbooks से Servers का Automation

Source: https://www.geekswithgeeks.com/hi/ansible/pb-check-diff

> Playbook लागू करने से पहले देखें कि वह क्या बदलेगा।

## कूदने से पहले देखें

`--check` (dry run) बताता है कि कौन-से tasks कुछ **बदलते**, बिना बदले, और `--diff` files व templates का ठीक पहले/बाद दिखाता है। production छूने से पहले दोनों चलाएँ। हर module check mode समर्थित नहीं करता और कुछ tasks पहले के बदलावों पर निर्भर होते हैं, इसलिए इसे मज़बूत पूर्वावलोकन मानें, पूर्ण गारंटी नहीं।

## Drift पकड़ना, चलाकर

मैंने `web1.conf` में हाथ से अनचाही पंक्ति `port=1` जोड़ी, फिर `--check --diff` से चलाया। Ansible दिखाता है कि वह वह पंक्ति हटाएगा (`-port=1`) और web1 को changed=1 बताता है जबकि web2 अपरिवर्तित है।

```bash
ansible-playbook -i inventory.ini site.yml --check --diff
```

Output:

```
--- before: .../out/web1.conf
+++ after: .../app.conf.j2
-port=1
web1                       : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
web2                       : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
```

## Syntax जाँच

इसे CI में सबसे पहले चलाएँ। यह किसी host से संपर्क किए बिना playbook parse करता है।

```bash
ansible-playbook -i inventory.ini site.yml --syntax-check
```

Output:

```
playbook: site.yml
```

**Quiz:** `--check --diff` क्या करता है?

- [ ] Playbook encrypt करता है
- [ ] Target files हटाता है
- [x] बिना बदले दिखाता है कि क्या बदलेगा
- [ ] Logs server पर upload करता है

*Answer:* बिना बदले दिखाता है कि क्या बदलेगा. Check mode run का अनुकरण करता है और diff अंतर दिखाता है।
