class pyroscope( $password = lookup('pyroscope::password', undef, undef, ''), $homedir = lookup('pyroscope::homedir', undef, undef, '/var/cache/torrent'), $groups = lookup('pyroscope::groups', undef, undef, [ 'incoming' ]), ) { case $password { '': { fail("You need to define torrent user password! Please set pyroscope::password in your config") } } include pyroscope::dependencies user::manage { "torrent": password => $password, homedir => $homedir, ensure => present, groups => $groups, } file { '/var/cache/media/seeding': ensure => directory, owner => torrent, group => torrent, mode => '0775', require => [ File['/var/cache/media'], User['torrent'] ], } file { "${homedir}/.profile": ensure => present, owner => torrent, group => torrent, mode => '0644', source => 'puppet:///modules/pyroscope/profile.sh', require => User['torrent'], } file { "${homedir}/.bashrc": ensure => present, owner => torrent, group => torrent, mode => '0644', source => 'puppet:///modules/pyroscope/bashrc.sh', require => User['torrent'], } file { "${homedir}/rtorrent": ensure => directory, owner => torrent, group => torrent, mode => '0755', require => User['torrent'], } file { "${homedir}/rtorrent/done": ensure => '/var/cache/media/incoming', owner => torrent, group => torrent, require => File["${homedir}/rtorrent"], } file { "${homedir}/rtorrent/seeding": ensure => '/var/cache/media/seeding', owner => torrent, group => torrent, require => File["${homedir}/rtorrent"], } file { [ "${homedir}/rtorrent/log", "${homedir}/rtorrent/.session" ]: ensure => directory, owner => torrent, group => torrent, mode => '0755', require => File["${homedir}/rtorrent"], } file { "${homedir}/rtorrent/rtorrent.rc": ensure => present, owner => torrent, group => torrent, mode => '0644', source => [ 'puppet:///modules/site_pyroscope/rtorrent.rc', 'puppet:///modules/pyroscope/rtorrent.rc', ], require => File["${homedir}/rtorrent"], } file { "${homedir}/.rtorrent.rc": ensure => "${homedir}/rtorrent/rtorrent.rc", owner => torrent, group => torrent, require => File["${homedir}/rtorrent/rtorrent.rc"], } file { "${homedir}/rtorrent/start": ensure => present, owner => torrent, group => torrent, mode => '0755', source => 'puppet:///modules/pyroscope/start.sh', require => File["${homedir}/rtorrent"], } file { "${homedir}/.pyroscope": ensure => directory, owner => torrent, group => torrent, mode => '0755', require => User['torrent'], } file { "${homedir}/.pyroscope/run": ensure => directory, owner => torrent, group => torrent, mode => '0755', require => File["${homedir}/.pyroscope"], } file { "${homedir}/.pyroscope/run/pyrotorque": ensure => present, owner => torrent, group => torrent, mode => '0644', require => File["${homedir}/.pyroscope/run"], } file { "${homedir}/.pyroscope/torque.ini": ensure => present, owner => torrent, group => torrent, mode => '0644', source => 'puppet:///modules/pyroscope/torque.ini', require => File["${homedir}/.pyroscope"], } file { [ "${homedir}/bin", "${homedir}/lib", "${homedir}/src" ]: ensure => directory, owner => torrent, group => torrent, mode => '0755', require => User['torrent'], } file { "${homedir}/bin/rtcron": ensure => present, owner => torrent, group => torrent, mode => '0755', source => 'puppet:///modules/pyroscope/rtcron.sh', require => File["${homedir}/bin"], } cron { "rtcron": command => "${homedir}/bin/rtcron > ${homedir}/rtorrent/log/rtcron.log 2>&1", user => torrent, hour => "*", minute => "*", ensure => present, require => File["${homedir}/bin/rtcron"], } vcsrepo { "${homedir}/lib/pyroscope": ensure => present, provider => git, source => 'https://github.com/pyroscope/pyrocore.git', revision => '7da621848e24c1a0f897be8065045dd49ef9f8bb', owner => 'torrent', group => 'torrent', require => [ User['torrent'], File["${homedir}/lib"] ], } vcsrepo { "${homedir}/src/rtorrent-ps": ensure => present, provider => git, source => 'https://github.com/pyroscope/rtorrent-ps.git', revision => 'b51bdba86b8b6331f6281fbbcab2cae7329bcaa9', owner => 'torrent', group => 'torrent', require => [ User['torrent'], File["${homedir}/src"] ], } exec { 'pyroscope-update-to-head': command => "${homedir}/lib/pyroscope/update-to-head.sh", user => torrent, timeout => 0, creates => "${homedir}/bin/pyroadmin", require => [ Class['pyroscope::dependencies'], Vcsrepo["${homedir}/lib/pyroscope"] ], } exec { 'pyroscope-rtorrent-ps-build': command => './build.sh all && ./build.sh extend', cwd => "${homedir}/src/rtorrent-ps", user => torrent, timeout => 0, creates => "${homedir}/bin/rtorrent", require => [ Class['pyroscope::dependencies'], Vcsrepo["${homedir}/src/rtorrent-ps"] ], } }