class openssl { class base { package { 'openssl': ensure => installed } } define self_signed_cert($directory = '/etc/certs') { include openssl::base $pem_file = "$name.pem" exec { "openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout $pem_file -out $pem_file -subj '/CN=$name'": cwd => "$directory", creates => "$directory/$name.pem", require => Package['openssl'] } } define self_signed_splitted_cert($filename = '', $directory = '/etc/certs', $owner = "root", $group = 'root', $mode = '600') { include openssl::base $crt_file = "$filename.crt" $key_file = "$filename.key" exec { "openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout $key_file -out $crt_file -subj '/CN=$name'": cwd => "$directory", creates => "$directory/$key_file", require => Package['openssl'], before => [ File["$directory/$key_file"], File["$directory/$crt_file"]] } file { ["$directory/$key_file","$directory/$crt_file"]: owner => $owner, group => $group, mode => $mode } } }