Isto foi devido ao tratamento diferente de códigos de saída do fantoche.
Eu tive que usar:
puppet apply --detailed-exitcodes /etc/puppet/modules/...
if [[ $? != 2 ]]
then
exit 1
fi
;;
Isto indica ao código de saída 1 do packer.io right quando o puppet não termina com o código de saída "tudo correu bem" 2.