Eu faria uma aula separada no mesmo manifesto:
class openssh::ufw {
exec { "allow-openssh":
command => "/usr/sbin/ufw allow OpenSSH",
unless => "/usr/sbin/ufw status | grep \"OpenSSH.*ALLOW.*Anywhere\|Status: inactive\"",
require => [Package["ufw"], Exec["enable-firewall"], Package["openssh-server"], Service["ssh"]]
}
}
que você incluir tanto quando ambos ssh e ufw estão lá, ou sempre e deve Bork quando ufw não está lá, mas deixando a class openssh
funcionando.