1 # Class: profiles::cacert_selfservice
2 # ===================================
4 # This class defines the cacert_selfservice profile that configures the CAcert
5 # community self service system web interface.
10 # @param server_certificate PEM encoded X.509 server certificate
12 # @param server_private_key PEM encoded unencrypted RSA private key
18 # class roles::myhost {
19 # include profiles::cacert_selfservice
25 # Jan Dittberner <jandd@cacert.org>
30 # Copyright 2019 Jan Dittberner
32 class profiles::cacert_selfservice (
33 String $server_certificate,
34 String $server_private_key,
36 include profiles::cacert_debrepo
38 $service_name = 'cacert-selfservice'
39 $config_directory = "/etc/${service_directory}"
40 $config_file = "${config_directory}/config.yaml"
41 $server_certificate_file = "${config_directory}/certs/server.crt.pem"
42 $server_key_file = "${config_directory}/private/server.key.pem"
43 $log_directory = "/var/log/${service_name}"
45 $api_ca_file = "${config_directory}/certs/api_cas.pem"
46 $client_ca_file = "${config_directory}/certs/client_cas.pem"
48 package { $service_name:
50 require => Apt::Source['cacert'],
53 file { $log_directory:
55 owner => $service_name,
58 require => Package[$service_name],
60 file { "${config_directory}/certs":
62 owner => $service_name,
65 require => Package[$service_name],
67 file { "${config_directory}/private":
69 owner => $service_name,
72 require => Package[$service_name],
74 file { $server_certificate_file:
76 owner => $service_name,
79 content => $server_certificate,
80 require => File["${config_directory}/certs"],
81 notify => Service[$service_name],
83 file { $server_key_file:
85 owner => $service_name,
88 content => $server_private_key,
89 require => File["${config_directory}/private"],
90 notify => Service[$service_name],
92 concat { $client_ca_file:
94 owner => $service_name,
97 require => File["${config_directory}/certs"],
98 notify => Service[$service_name],
100 concat::fragment { 'cacert-class3-client-ca':
101 tag => 'cacert-class3-client-ca',
103 target => $client_ca_file,
104 source => 'puppet:///modules/profiles/base/cacert_class3_X0E.crt',
106 concat::fragment { 'cacert-class1-client-ca':
107 tag => 'cacert-class1-client-ca',
109 target => $client_ca_file,
110 source => 'puppet:///modules/profiles/base/cacert_class1_X0F.crt',
115 owner => $service_name,
118 source => 'puppet:///modules/profiles/base/cacert_class3_X0E.crt',
119 require => File["${config_directory}/certs"],
120 notify => Service[$service_name],
123 service { $service_name:
126 require => Package[$service_name],