Анонимно: принуждаване на тръбата - баш, черупка, обработка на грешки, тръба, евентуално

По-рано днес преживяхме неприятен проблем, причинен от следната черупка:

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

Най- git командата не успее, но кодът за връщане на цялата тръба е 0. Това е по подразбиране поведение bash / sh,

За да поправите това, в sh / bash, можете set -o pipefail или set -e, Възможно ли е да се направи това в евентуално, за предпочитане в световен мащаб за всички мои shell команди?

Отговори:

3 за отговор № 1

Като цяло трябва да се опитате да използвате черупкатакоманди като последно средство, тъй като те са склонни да бъдат малко крехки. Ако трябва да използвате модула на обвивката с опции за черупки, просто го изпратете като част от командния ви тръбопровод, както е показано по-долу. Изпълнимият параметър принуждава използването на бас shell.

[[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

Свързани въпроси
Най - известен