class openssl { class base { package { 'openssl': } } 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 = '0600') { 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, } } }