Это было связано с различной обработкой кодов выхода из кукол.
Я должен был использовать:
puppet apply --detailed-exitcodes /etc/puppet/modules/... if [[ $? != 2 ]] then exit 1 fi ;;
Это указывает правильному коду выхода 1 для packer.io, когда кукла не заканчивает с кодом выхода 2 «все прошло хорошо».