neoloc/sonarr_deploy #48

Merged
unkinben merged 4 commits from neoloc/sonarr_deploy into develop 2024-06-21 22:53:06 +10:00
5 changed files with 140 additions and 0 deletions
Showing only changes of commit b4c20fd7d6 - Show all commits

View File

@ -0,0 +1,21 @@
# manage sonarr
class sonarr (
$packages = $sonarr::params::packages,
$user = $sonarr::params::user,
$group = $sonarr::params::user,
$base_path = $sonarr::params::base_path,
$install_path = $sonarr::params::install_path,
$config_folder = $sonarr::params::config_folder,
$app_folder = $sonarr::params::app_folder,
$archive_name = $sonarr::params::archive_name,
$archive_url = $sonarr::params::archive_url,
$executable = $sonarr::params::executable,
$service_enable = $sonarr::params::service_enable,
$service_name = $sonarr::params::service_name,
) inherits sonarr::params {
include sonarr::install
include sonarr::service
Class['sonarr::install'] -> Class['sonarr::service']
}

View File

@ -0,0 +1,58 @@
# instsall sonarr
class sonarr::install (
$packages = $sonarr::packages,
$user = $sonarr::user,
$group = $sonarr::user,
$base_path = $sonarr::base_path,
$install_path = $sonarr::install_path,
$config_folder = $sonarr::config_folder,
$app_folder = $sonarr::app_folder,
$archive_name = $sonarr::archive_name,
$archive_url = $sonarr::archive_url,
$executable = $sonarr::executable,
) {
$_packages = $packages ? {
Array => true,
default => false,
}
if $_packages {
ensure_packages($packages, {ensure => 'installed'})
}
group { $group:
ensure => present,
}
user { $user:
ensure => present,
shell => '/sbin/nologin',
groups => $group,
managehome => true,
}
file { [ $base_path, $install_path, $config_folder, $app_folder ]:
ensure => directory,
owner => $user,
group => $group,
}
archive { $archive_name:
path => "/tmp/${archive_name}",
source => "${archive_url}${archive_name}",
extract => true,
extract_path => $install_path,
creates => "${install_path}/${executable}",
cleanup => true,
require => File[$install_path],
user => $user,
group => $group,
notify => Exec['move_sonarr_files'],
}
exec { 'move_sonarr_files':
command => "/usr/bin/mv ${install_path}/NzbDrone/* ${install_path}",
creates => "${install_path}/${executable}",
}
}

View File

@ -0,0 +1,27 @@
# sonarr params
class sonarr::params (
$packages = [
'mediainfo',
'libzen',
'libmediainfo',
'gettext',
'sqlite.x86_64',
'par2cmdline',
'python3-feedparser',
'python3-configobj',
'python3-cheetah',
'python3-dbus',
'libxslt-devel'
],
$user = 'sonarr',
$base_path = '/opt/sonarr',
$install_path = '/opt/sonarr/bin',
$config_folder = "/home/${user}/.config",
$app_folder = "/home/${user}/.config/Sonarr",
$archive_version = '4.0.5',
$archive_name = 'Sonarr.main.linux-x64.tar.gz',
$archive_url = "https://git.query.consul/api/packages/unkinben/generic/sonarr/${archive_version}/",
$executable = 'Sonarr',
$service_enable = true,
$service_name = 'sonarr',
){}

View File

@ -0,0 +1,20 @@
# manage sonarr service
class sonarr::service (
$service_enable = $sonarr::service_enable,
$service_name = $sonarr::service_name,
$user = $sonarr::user,
$group = $sonarr::user,
$install_path = $sonarr::install_path,
$executable = $sonarr::executable,
$base_path = $sonarr::base_path,
) {
if $service_enable {
include ::systemd
systemd::unit_file { "${service_name}.service":
content => template('sonarr/sonarr.service.erb'),
enable => true,
active => true,
}
}
}

View File

@ -0,0 +1,14 @@
[Unit]
Description=<%= @service_name %> Daemon
After=syslog.target network.target
[Service]
User=<%= @user %>
Group=<%= @group %>
Type=simple
ExecStart=<%= @install_path %>/<%= @executable %> -nobrowser -data=<%= @base_path %>
KillMode=process
Restart=on-failure
TimeoutStopSec=20
[Install]
WantedBy=multi-user.target