पाठ 25 / 26
केस स्टडी: कई Environments में Web App Deploy करना
ऐसा repository और workflow डिज़ाइन करें जो web app को staging और production में सुरक्षित रूप से deploy करे।
डिज़ाइन
Repository: inventories/staging और inventories/production, हर एक में hosts.ini और group_vars (ports, replica संख्या, अलग vault passwords के साथ vaulted secrets)। Roles: common (users, packages, firewall), nginx, app_deploy (release directory, systemd unit, template config, reload के लिए handler)। Pipeline: pull request पर syntax-check, ansible-lint और Molecule चलाएँ; merge पर staging में पहले --check --diff फिर असली deploy; production controller से, मंज़ूरी चरण के साथ, पहले canary host, फिर health checks और max_fail_percentage के साथ serial: 25%। Rollback पिछले release variable के साथ दोबारा चलाना है। हर run commit ID के साथ log होता है।
सुरक्षित deployment pipeline
Inventory, roles, secrets, tests और rolling rollout एक दिनचर्या के रूप में साथ काम करते हैं।
एक पन्ने पर setup
हर पंक्ति इस कोर्स के एक खंड से जुड़ती है।
Inventory per-environment dirs + group_vars (Sec 1, 3)
Playbooks idempotent, named tasks, handlers, check --diff (Sec 2, 4)
Roles common, nginx, app_deploy; pinned collections (Sec 5)
Secrets Vault per environment; no_log; least privilege (Sec 6)
Quality syntax-check, ansible-lint, Molecule in CI (Sec 7)
Rollout canary host, serial batches, health checks, rollback (Sec 7)Rollback का अभ्यास करें
Staging में rollback का अभ्यास करें ताकि वह ज्ञात, तेज़ प्रक्रिया हो, किसी outage के दौरान तुरंत गढ़ी जाने वाली चीज़ नहीं।
त्वरित जाँच: Production में पहले canary host पर deploy क्यों करें?
- यह health checks की ज़रूरत टालता है
- Canary hosts तेज़ होते हैं
- ताकि समस्याएँ तब पकड़ी जाएँ जब सिर्फ़ एक मशीन प्रभावित हो
- Production batches अस्वीकार करता है
Answer
ताकि समस्याएँ तब पकड़ी जाएँ जब सिर्फ़ एक मशीन प्रभावित हो — छोटा पहला कदम ख़राब बदलाव के असर का दायरा सीमित करता है।