diff --git a/site/profiles/manifests/puppet/server.pp b/site/profiles/manifests/puppet/server.pp index 09b27e1..657bd41 100644 --- a/site/profiles/manifests/puppet/server.pp +++ b/site/profiles/manifests/puppet/server.pp @@ -71,14 +71,55 @@ class profiles::puppet::server ( hasstatus => true, hasrestart => true, } - # generate puppet types when restarting - systemd::manage_dropin { 'generate_types.conf': - ensure => present, - unit => 'puppetserver.service', - service_entry => { - 'ExecStartPost' => [ - "/opt/puppetlabs/bin/puppet generate types --environmentpath ${codedir}/environments", - ], - }, - } + + # generate puppet types when restarting + systemd::manage_dropin { 'generate_types.conf': + ensure => absent, + unit => 'puppetserver.service', + service_entry => { + 'ExecStartPost' => [ + "/opt/puppetlabs/bin/puppet generate types --environmentpath ${codedir}/environments", + ], + }, + } + + file { '/usr/local/bin/puppet_generate_types.sh': + ensure => file, + mode => '0755', + content => @("EOF") + #!/bin/bash + sudo -u puppet /opt/puppetlabs/bin/puppet generate types --environmentpath ${codedir}/environments + exit 0 + | EOF + } + + $_timer = @(EOT) + [Unit] + Description=puppet-generate-types timer + [Timer] + OnCalendar=daily + Persistent=true + [Install] + WantedBy=timers.target + EOT + + $_service = @(EOT) + [Unit] + Description=puppet-generate-types service + [Service] + Type=oneshot + ExecStart=/usr/local/bin/puppet_generate_types.sh + User=root + Group=root + PermissionsStartOnly=false + PrivateTmp=no + EOT + + systemd::timer { 'puppet-generate-types.timer': + timer_content => $_timer, + service_content => $_service, + active => true, + enable => true, + require => File['/usr/local/bin/puppet_generate_types.sh'], + } }