2015-01-06 5 views
9

के लिए Ansible error handlingवहाँ कुछ Ansible बराबर करने के लिए "failed_when" सफलता

से निपटने मैं केवल प्रावधान fail_when असफल के लिए एक रास्ता दिखाई देने वाले त्रुटि के बारे में दस्तावेज़ में दिख रही है, मैं अगर वहाँ विपरीत करने के लिए कोई रास्ता नहीं है सोच रहा हूँ।

कुछ है कि इस तरह दिखता है:

- name: ping pong redis 
    command: redis-cli ping 
    register: command_result 
    succees_when: "'PONG' in command_result.stderr" 

धन्यवाद।

उत्तर

5

मुझे लगता है कि शायद assert module वह है जो आप चाहते हैं।

संस्करण में नई 1.5

उदाहरण:

- assert: { that: "ansible_os_family != 'RedHat'" } 
12

ऐसा कोई सुविधा है, कम से कम मेलिंग सूची पर मेरी सुझाव होने लगते रहे जवाब नहीं दी गई:

- name: ping pong redis 
    command: redis-cli ping 
    register: command_result 
    failed_when: 
    - "'PONG' not in command_result.stderr" 
    - "command_result.rc != 0" 
:

https://groups.google.com/forum/#!topic/ansible-project/cIaQTmY3ZLE

क्या मदद कर सकता है पता चला है कि failed_when इसके सिमेंटिक के लिए अलग तरह से व्यवहार करती है

विफल कोड अगर 0 है और stderr में कोई 'पोंग' नहीं है तो विफल हो जाएगा। इसलिए यदि कोई सूची False

+4

ध्यान देने योग्य बात है कि आप भी हमेशा से ही किसी भी बूलियन अभिव्यक्ति कोष्ठक में लपेट और "नहीं" अवश्य लगा दें कर सकते हैं एक ही प्रभाव प्राप्त करने के लिए लायक । उदाहरण के लिए, 'नहीं (यूआरएल | मैचों (' http://example.com/.* ')) '। यह इंगित करते हुए कि यह यहां छिपा हुआ है क्योंकि आप 'इनलाइन' और '! =' इनलाइन का उपयोग कर रहे हैं, जबकि आम तौर पर विशेष इनलाइन ऑपरेटर नहीं होते हैं। –

+0

यह पढ़ने में भ्रमित है, लेकिन यह अच्छी तरह से काम करता है। –

संबंधित मुद्दे