class ssl { file { [ "/etc/ssl", "/etc/ssl/certs", "/etc/ssl/private" ]: ensure => directory, owner => "root", group => "root", } file { "/etc/ssl/certs/cert.crt": ensure => present, owner => "root", group => "root", mode => 644, source => "puppet://$server/files/keys/ssl/cert.crt", require => File["/etc/ssl/certs"], } file { "/etc/ssl/private/cert.pem": ensure => present, owner => "root", group => "root", mode => 600, source => "puppet://$server/files/keys/ssl/cert.pem", require => File["/etc/ssl/private"], } } class ssl::mail inherits ssl { File['/etc/ssl/private/cert.pem'] { group => postfix, mode => 0640, } }