Ansible: लागू pipefail-बैश, शैल, त्रुटि-हैंडलिंग, पाइप, Ansible

इससे पहले, हमने एक बुरा मुद्दा अनुभव किया जो निम्नलिखित शैल पाइप के कारण हुआ था:

- name: get remote branches
shell: git ls-remote -h [email protected]:orga/repo.git | sed "s_.*refs/heads/__g"
register: branches_remote

The git आदेश विफल रहता है, लेकिन पूरे पाइप के रिटर्न कोड 0 है । यह डिफ़ॉल्ट मार/

इसे ठीक करने के लिए, एसएच/ set -o pipefail या set -e. क्या यह संभव है कि ansible में, अधिमानतः दुनिया भर के लिए मेरे सभी shell आदेशों?

उत्तर:

जवाब के लिए 3 № 1

सामांय में आप एक अंतिम उपाय के रूप में खोल आज्ञाओं का उपयोग करने के रूप में वे एक भंगुर सा हो जाते है की कोशिश करनी चाहिए ।यदि आप किसी भी खोल विकल्प के साथ खोल मॉड्यूल का उपयोग करने की जरूरत है, बस इसे अपने आदेश पाइपलाइन के भाग के रूप में प्रस्तुत के रूप में नीचे दिखाया गया है ।निष्पादन योग्य पैरामीटर मार शैल का उपयोग बलों ।

[[email protected] ~]$ ansible myhost -m shell -a "executable=/bin/bash set -o pipefail && false | echo hello there"
myhost | FAILED | rc=1 >>
hello there

[[email protected] ~]$ ansible myhost -m shell -a "executable=/bin/bash set -o pipefail && true | echo hello there"
myhost | success | rc=0 >>
hello there

संबंधित सवाल
सबसे लोकप्रिय