cdist-troubleshooting(7)


Table of Contents

1. NAME
2. ERROR IN MANIFEST IS NOT CONSIDERED AN ERROR BY CDIST
3. SEE ALSO
4. COPYING

1. NAME

cdist-troubleshooting - common problems and their solutions

2. ERROR IN MANIFEST IS NOT CONSIDERED AN ERROR BY CDIST

Situation: You are executing other scripts from a manifest. This script fails, but cdist does not recognise the error. An example script would be something like this:

% cat ~/.cdist/manifest/init
"$__manifest/special"
% cat ~/.cdist/manifest/special
#!/bin/sh
echo "Here is an unclean exiting script"
somecommandthatdoesnotexist
echo "I continue here although previous command failed"

We can clearly see that somecommandthatdoesnotexist will fail in ~/.cdist/manifest/special. But as the custom script is not called with the -e flag (exit on failure) of shell, it does not lead to an error. And thus cdist sees the exit 0 code of the last echo line instead of the failing command.

All scripts executed by cdist carry the -e flag. To prevent the above from happening, there are three solutions available, two of which can be used in the calling script:

# Execute as before, but abort on failure
sh -e "$__manifest/special"

# Source the script in our namespace, runs in a set -e environment:
. "$__manifest/special"

The third solution is to include a shebang header in every script you write to use the -e flag:

% cat ~/.cdist/manifest/special
#!/bin/sh -e
...

3. SEE ALSO

  • cdist(1)
  • cdist-tutorial(7)

4. COPYING

Copyright (C) 2013 Nico Schottelius. Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3).