X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Frsync%2Fmanifests%2Fsite.pp;h=7d0882c81eed45494f9b96d66d5aacaf5df7ad7c;hb=7709c4b48f7dced425db4b14613c07cf0642e0b1;hp=60cab396d1e7d89179628511d09d63e90530221d;hpb=1362b9d1c582c0e2063ef93d893a45d775d49e0d;p=mirror%2Fdsa-puppet.git diff --git a/modules/rsync/manifests/site.pp b/modules/rsync/manifests/site.pp index 60cab396d..7d0882c81 100644 --- a/modules/rsync/manifests/site.pp +++ b/modules/rsync/manifests/site.pp @@ -1,128 +1,56 @@ +# an rsync site, systemd socket activated define rsync::site ( - $binds=['[::]'], - $source=undef, - $content=undef, - $max_clients=200, - $ensure=present, - $sslname=undef, + Array[String] $binds = ['[::]'], + Optional[String] $source = undef, + Optional[String] $content = undef, + Integer $max_clients = 200, + Enum['present','absent'] $ensure = 'present', + Optional[String] $sslname = undef, ) { - include rsync - - $fname_real_rsync = "/etc/rsyncd-${name}.conf" - $fname_real_stunnel = "/etc/rsyncd-${name}-stunnel.conf" - - case $ensure { - present,absent: {} - default: { fail ( "Invald ensure `${ensure}' for ${name}" ) } - } - - $ensure_service = $ensure ? { - present => running, - absent => stopped, - } - - $ensure_enable = $ensure ? { - present => true, - absent => false, - } - - file { $fname_real_rsync: - ensure => $ensure, - content => $content, - source => $source, - owner => 'root', - group => 'root', - mode => '0444', - } - - file { "/etc/systemd/system/rsyncd-${name}@.service": - ensure => $ensure, - content => template('rsync/systemd-rsyncd.service.erb'), - owner => 'root', - group => 'root', - mode => '0444', - require => File[$fname_real_rsync], - notify => Exec['systemctl daemon-reload'], - } - - file { "/etc/systemd/system/rsyncd-${name}.socket": - ensure => $ensure, - content => template('rsync/systemd-rsyncd.socket.erb'), - owner => 'root', - group => 'root', - mode => '0444', - notify => [ - Exec['systemctl daemon-reload'], - Service["rsyncd-${name}.socket"], - ], - } - - service { "rsyncd-${name}.socket": - ensure => $ensure_service, - enable => $ensure_enable, - require => [ - Exec['systemctl daemon-reload'], - File["/etc/systemd/system/rsyncd-${name}@.service"], - File["/etc/systemd/system/rsyncd-${name}.socket"], - ], - provider => systemd, - } - - if $sslname { - file { $fname_real_stunnel: - ensure => $ensure, - content => template('rsync/systemd-rsyncd-stunnel.conf.erb'), - owner => 'root', - group => 'root', - mode => '0444', - require => File["/etc/ssl/debian/certs/${sslname}.crt-chained"], - } - - file { "/etc/systemd/system/rsyncd-${name}-stunnel@.service": - ensure => $ensure, - content => template('rsync/systemd-rsyncd-stunnel.service.erb'), - owner => 'root', - group => 'root', - mode => '0444', - require => File[$fname_real_stunnel], - notify => Exec['systemctl daemon-reload'], - } - - file { "/etc/systemd/system/rsyncd-${name}-stunnel.socket": - ensure => $ensure, - content => template('rsync/systemd-rsyncd-stunnel.socket.erb'), - owner => 'root', - group => 'root', - mode => '0444', - notify => [ - Exec['systemctl daemon-reload'], - Service["rsyncd-${name}-stunnel.socket"] - ], - } - - service { "rsyncd-${name}-stunnel.socket": - ensure => $ensure_service, - enable => $ensure_enable, - require => [ - Exec['systemctl daemon-reload'], - File["/etc/systemd/system/rsyncd-${name}-stunnel@.service"], - File["/etc/systemd/system/rsyncd-${name}-stunnel.socket"], - Service["rsyncd-${name}.socket"], - ], - provider => systemd, - } - - @ferm::rule { "rsync-${name}-ssl": - domain => '(ip ip6)', - description => 'Allow rsync access', - rule => '&SERVICE(tcp, 1873)', - } - - dnsextras::tlsa_record{ "tlsa-${sslname}-1873": - zone => 'debian.org', - certfile => [ "/srv/puppet.debian.org/from-letsencrypt/${sslname}.crt" ], - port => 1873, - hostname => $sslname, - } - } + include rsync + + $fname_real_rsync = "/etc/rsyncd-${name}.conf" + $fname_real_stunnel = "/etc/rsyncd-${name}-stunnel.conf" + + file { $fname_real_rsync: + ensure => $ensure, + content => $content, + source => $source, + } + + dsa_systemd::socket_service { "rsyncd-${name}": + ensure => $ensure, + service_content => template('rsync/systemd-rsyncd.service.erb'), + socket_content => template('rsync/systemd-rsyncd.socket.erb'), + require => File[$fname_real_rsync], + } + + if $sslname { + file { $fname_real_stunnel: + ensure => $ensure, + content => template('rsync/systemd-rsyncd-stunnel.conf.erb'), + require => File["/etc/ssl/debian/certs/${sslname}.crt-chained"], + } + + dsa_systemd::socket_service { "rsyncd-${name}-stunnel": + ensure => $ensure, + service_content => template('rsync/systemd-rsyncd-stunnel.service.erb'), + socket_content => template('rsync/systemd-rsyncd-stunnel.socket.erb'), + require => File[$fname_real_stunnel], + } + + ferm::rule { "rsync-${name}-ssl": + domain => '(ip ip6)', + description => 'Allow rsync access', + rule => '&SERVICE(tcp, 1873)', + } + + $certdir = hiera('paths.letsencrypt_dir') + dnsextras::tlsa_record{ "tlsa-${sslname}-1873": + zone => 'debian.org', + certfile => [ "${certdir}/${sslname}.crt" ], + port => 1873, + hostname => $sslname, + } + } }