Ok, na verdade, no momento em que copiei o módulo puppetlabs-firewall para minha pasta comum (que inclui inclusões nos dois ambientes, teste e produção), funcionou.
Agora eu realmente gostaria de saber agora por quê. Aqui está o arquivo de configuração do puppetmaster. Talvez alguém possa dizer o meu porque se comporta da maneira que faz.
### File managed with puppet ###
## Module: 'puppet'
[main]
# The Puppet log directory.
# The default value is '$vardir/log'.
logdir = /var/log/puppet
# Where Puppet PID files are kept.
# The default value is '$vardir/run'.
rundir = /var/run/puppet
# Where SSL certificates are kept.
# The default value is '$confdir/ssl'.
ssldir = $vardir/ssl
# Allow services in the 'puppet' group to access key (Foreman + proxy)
privatekeydir = $ssldir/private_keys { group = service }
hostprivkey = $privatekeydir/$certname.pem { mode = 640 }
# Puppet 3.0.x requires this in both [main] and [master] - harmless on agents
autosign = $confdir/autosign.conf { mode = 664 }
show_diff = false
### Next part of the file is managed by a different template ###
## Module: 'puppet'
[agent]
# The file in which puppetd stores a list of the classes
# associated with the retrieved configuratiion. Can be loaded in
# the separate ''puppet'' executable using the ''--loadclasses''
# option.
# The default value is '$statedir/classes.txt'.
classfile = $vardir/classes.txt
# Where puppetd caches the local configuration. An
# extension indicating the cache format is added automatically.
# The default value is '$confdir/localconfig'.
localconfig = $vardir/localconfig
# Disable the default schedules as they cause continual skipped
# resources to be displayed in Foreman - only for Puppet >= 3.4
default_schedules = false
report = true
pluginsync = true
masterport = 8140
environment = production
certname = handsoff.dc0.mynetwork.de
server = handsoff.dc0.mynetwork.de
listen = false
splay = false
runinterval = 300
noop = false
configtimeout = 120
### Next part of the file is managed by a different template ###
## Module: 'puppet'
[master]
autosign = $confdir/autosign.conf { mode = 664 }
reports = foreman
external_nodes = /etc/puppet/node.rb
node_terminus = exec
ca = true
ssldir = /var/lib/puppet/ssl
certname = handsoff.dc0.mynetwork.de
strict_variables = false
[production]
modulepath = /etc/puppet/environments/production/modules:/etc/puppet/environments/common:/usr/share/puppet/modules
config_version =
[testing]
modulepath = /etc/puppet/environments/testing/modules:/etc/puppet/environments/common:/usr/share/puppet/modules
config_version =