The documentation regarding shell commands while reasonably complete doesn't say various things:
1. Exactly how "command" is executed. This seems to be through the shell (which one /bin/sh? /bin/bash?, can this be determined or influenced?)
2. How complex the command can be. Thus are all shell meta characters such as > >> && & etc. allowed
3. Variable interpolation, both by puppet and the shell. I assume puppet variables get evaluated first and this is what is passed to the shell to evaluate. If we want to use shell variables must the $VARIABLE be escaped as \$VARIABLE in order to reach the shell correctly as $VARIABLE?
4. Comments about which file descriptors command can assume are open (only stdout/stderr? is stdin redirected?)
5. Any limits (command size limit) that puppet imposes on "command"
6. A comment regarding the best practice of:
(a) making a large complex command, or
(b) writing a separate script which is distributed by puppet from the master and executed from command on the client
I think that for certain more complex actions which might be done inside puppet this information would be invaluable.