पाठ 22 / 26

Linting और Testing

Syntax जाँच, ansible-lint और role tests से ग़लतियाँ जल्दी पकड़ें।

Tests की सीढ़ी

सस्ते से गहन तक की सीढ़ी बनाएँ: --syntax-check (playbook parse करता है), ansible-lint (जोखिम भरे या अ-मानक patterns चिह्नित करता है, जैसे ग़ायब नाम, modules की जगह shell, और बिना pin के versions), staging के विरुद्ध --check --diff, और integration tests जो roles को फेंकने योग्य container या VM में सचमुच लागू करके नतीजा जाँचते हैं, जैसे Molecule से। सस्ते steps हर commit पर CI में चलाएँ। जल्दी विफल होना टूटे automation को production से बाहर रखता है।

परखें, बढ़ाएँ, सुरक्षित रूप से rollout करें

Linting, tests और rolling updates playbooks को भरोसेमंद production tooling बनाते हैं।

तीन आदतें: lint, test, क्रमिक rollout।
चित्र 7.1 — Lint, test और क्रमिक rollout।

CI के steps

न्यूनतम pipeline। ansible-lint और molecule अलग tools हैं जो आप CI में install करते हैं। Syntax-check step वही है जो मैंने ऊपर चलाया।

ansible-playbook -i inventories/staging site.yml --syntax-check
ansible-lint site.yml roles/
molecule test                 # per role, in a container
ansible-playbook -i inventories/staging site.yml --check --diff

Idempotence परखें

मज़बूत test role को दो बार चलाता है और पक्का करता है कि दूसरे run में कोई बदलाव नहीं बताया गया। Molecule यह जाँच डिफ़ॉल्ट रूप से करता है।

त्वरित जाँच: अच्छा idempotence test क्या है?

  • पहले production पर चलाएँ
  • एक बार चलाकर उम्मीद रखें
  • Host हटाएँ
  • दो बार चलाएँ और दूसरे run में शून्य बदलाव की अपेक्षा करें
Answer

दो बार चलाएँ और दूसरे run में शून्य बदलाव की अपेक्षा करें — दूसरे run में भी बदलाव हों तो automation स्थिर स्थिति पर नहीं पहुँच रहा।