पाठ 7 / 26

Idempotency

दिखाएँ कि playbook दो बार चलाने पर दूसरी बार system नहीं बदलता।

इसे सुरक्षित रूप से फिर चलाएँ

Idempotency Ansible का सबसे मूल्यवान गुण है: modules मौजूदा स्थिति जाँचते हैं और तभी कुछ करते हैं जब वह आपके माँगे से अलग हो। इससे playbooks बार-बार चलाना सुरक्षित होता है, CI से, निर्धारित समय पर, या किसी के हाथ से server बदलने पर आए drift को सुधारने के लिए। command और shell modules स्वभाव से idempotent नहीं हैं; जहाँ बना-बनाया module हो वही उपयोग करें, या creates:, removes: या changed_when: जोड़ें ताकि Ansible जान सके कि सचमुच कुछ बदला या नहीं।

दूसरा run, असली चलाकर

मैंने वही playbook फिर चलाया। हर task ok बताता है, handler नहीं चलता, और recap दोनों hosts के लिए changed=0 दिखाता है।

ansible-playbook -i inventory.ini site.yml

Output:

PLAY RECAP *********************************************************************
web1                       : ok=2    changed=0    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

Shell की जगह modules चुनें

ansible.builtin.apt, file, copy, user, service और कई अन्य स्थिति वर्णित करते हैं। shell: apt install nginx हर बार changed बताएगा।

त्वरित जाँच: Idempotency मूल्यवान क्यों है?

  • Playbooks सुरक्षित रूप से दोबारा चल सकते हैं और drift सुधारते हैं
  • यह tasks को धीमा करता है
  • यह inventory की ज़रूरत हटाता है
  • यह सिर्फ़ Windows पर चलता है
Answer

Playbooks सुरक्षित रूप से दोबारा चल सकते हैं और drift सुधारते हैं — घोषित स्थिति का मतलब है दोहराए runs उसी नतीजे पर पहुँचते हैं।