feat: manage sonarr configuration

- add config class to sonarr module
- update params to include unique group param
This commit is contained in:
Ben Vincent 2024-06-25 23:30:10 +10:00
parent 34e696e8c3
commit f22556b39f
8 changed files with 113 additions and 31 deletions

View File

@ -0,0 +1 @@
sonarr::api_key: ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEwDQYJKoZIhvcNAQEBBQAEggEANhwc0Vk0htkacwqGA/ZEVR7hpC1V2+nyP3lxyqkVNWERdcIsoMjlfwp2QNoLVirALY10Kon1wKXiRLT+QOqF9aTapS2Vb2YH3ZujR5yT6T1z4e0o4EA3IlNJZemVIziIqrK8+8zZzVafYdOYwMwpbc5EzoJPBtdqNHbDaQu4bRTCp2yMISTOzFjZpOoEJlRyC8YrffNU2xzA5mh5Cw+00MdIfPd8enrCnA4b1ddqP/IsfEYRt91ANQBULwKC5wenKdJAN5qKSKW6KU9TUM5YvGvUPgTvcYgXNf3/INL6G3/HwISTE5A7S6lqwYLyRTT1fMHtgDIqS936DPqCdAZtzjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBZ4e3jAM0zvV43IrCzQOGIgDBwOWgm+wJG+jAU8r1awWDvzQXgF3h65nAKfoOuGEztsjeBEruU4EmZy6llLbfSSb8=]

View File

@ -29,6 +29,7 @@ profiles::nginx::simpleproxy::nginx_aliases:
- sonarr.query.consul
- "sonarr.service.%{facts.country}-%{facts.region}.consul"
profiles::nginx::simpleproxy::proxy_port: 8989
profiles::nginx::simpleproxy::proxy_host: 127.0.0.1
profiles::nginx::simpleproxy::proxy_path: '/'
# configure consul service

View File

@ -0,0 +1,27 @@
class sonarr::config (
$user = $sonarr::params::user,
$group = $sonarr::params::group,
$base_path = $sonarr::params::base_path,
$bind_address = $sonarr::bind_address,
$port = $sonarr::port,
$ssl_port = $sonarr::ssl_port,
$enable_ssl = $sonarr::enable_ssl,
$launch_browser = $sonarr::launch_browser,
$api_key = $sonarr::api_key,
$authentication_method = $sonarr::authentication_method,
$authentication_required = $sonarr::authentication_required,
$branch = $sonarr::branch,
$log_level = $sonarr::log_level,
$ssl_cert_path = $sonarr::ssl_cert_path,
$ssl_cert_password = $sonarr::ssl_cert_password,
$url_base = $sonarr::url_base,
$instance_name = $sonarr::instance_name,
) {
file { "${base_path}/config.xml":
ensure => file,
content => template('sonarr/sonarr_config.xml.erb'),
owner => $user,
group => $group,
mode => '0644',
}
}

View File

@ -1,21 +1,36 @@
# 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,
$packages = $sonarr::params::packages,
$user = $sonarr::params::user,
$group = $sonarr::params::group,
$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,
$bind_address = $sonarr::params::bind_address,
$port = $sonarr::params::port,
$ssl_port = $sonarr::params::ssl_port,
$enable_ssl = $sonarr::params::enable_ssl,
$launch_browser = $sonarr::params::launch_browser,
$api_key = $sonarr::params::api_key,
$authentication_method = $sonarr::params::authentication_method,
$authentication_required = $sonarr::params::authentication_required,
$branch = $sonarr::params::branch,
$log_level = $sonarr::params::log_level,
$ssl_cert_path = $sonarr::params::ssl_cert_path,
$ssl_cert_password = $sonarr::params::ssl_cert_password,
$url_base = $sonarr::params::url_base,
$instance_name = $sonarr::params::instance_name,
) inherits sonarr::params {
include sonarr::install
include sonarr::config
include sonarr::service
Class['sonarr::install'] -> Class['sonarr::service']
Class['sonarr::install'] -> Class['sonarr::config'] -> Class['sonarr::service']
}

View File

@ -2,7 +2,7 @@
class sonarr::install (
$packages = $sonarr::packages,
$user = $sonarr::user,
$group = $sonarr::user,
$group = $sonarr::group,
$base_path = $sonarr::base_path,
$install_path = $sonarr::install_path,
$config_folder = $sonarr::config_folder,

View File

@ -1,6 +1,6 @@
# sonarr params
class sonarr::params (
$packages = [
Array[String] $packages = [
'mediainfo',
'libzen',
'libmediainfo',
@ -13,15 +13,36 @@ class sonarr::params (
'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/Sonarr',
$service_enable = true,
$service_name = 'sonarr',
){}
String $user = 'sonarr',
String $group = 'sonarr',
Stdlib::Absolutepath $base_path = '/opt/sonarr',
Stdlib::Absolutepath $install_path = '/opt/sonarr/bin',
Stdlib::Absolutepath $config_folder = '/home/sonarr/.config',
Stdlib::Absolutepath $app_folder = '/home/sonarr/.config/Sonarr',
String $archive_version = '4.0.5',
String $archive_name = 'Sonarr.main.linux-x64.tar.gz',
Stdlib::HTTPUrl $archive_url = "https://git.query.consul/api/packages/unkinben/generic/sonarr/${archive_version}/",
String $executable = 'Sonarr/Sonarr',
String $service_name = 'sonarr',
Boolean $service_enable = true,
# params for the configuration file
Stdlib::Host $bind_address = '127.0.0.1',
Stdlib::Port $port = 8989,
Stdlib::Port $ssl_port = 9898,
Boolean $enable_ssl = false,
Boolean $launch_browser = true,
String $api_key = '32-digit-random-string-goes-here',
Enum[
'Forms',
'Basic',
'External'
] $authentication_method = 'External',
Enum['Enabled', 'Disabled'] $authentication_required = 'Enabled',
String $branch = 'main',
Enum['debug', 'info', 'warn', 'error', 'fatal'] $log_level = 'info',
Optional[String] $ssl_cert_path = undef,
Optional[String] $ssl_cert_password = undef,
Optional[String] $url_base = undef,
String $instance_name = 'Sonarr',
) { }

View File

@ -3,7 +3,7 @@ class sonarr::service (
$service_enable = $sonarr::service_enable,
$service_name = $sonarr::service_name,
$user = $sonarr::user,
$group = $sonarr::user,
$group = $sonarr::group,
$install_path = $sonarr::install_path,
$executable = $sonarr::executable,
$base_path = $sonarr::base_path,
@ -12,9 +12,10 @@ class sonarr::service (
include ::systemd
systemd::unit_file { "${service_name}.service":
content => template('sonarr/sonarr.service.erb'),
enable => true,
active => true,
content => template('sonarr/sonarr.service.erb'),
enable => true,
active => true,
subscribe => File["${base_path}/config.xml"],
}
}
}

View File

@ -0,0 +1,16 @@
<Config>
<BindAddress><%= @bind_address %></BindAddress>
<Port><%= @port %></Port>
<SslPort><%= @ssl_port %></SslPort>
<EnableSsl><%= @enable_ssl.to_s.capitalize %></EnableSsl>
<LaunchBrowser><%= @launch_browser.to_s.capitalize %></LaunchBrowser>
<ApiKey><%= @api_key %></ApiKey>
<AuthenticationMethod><%= @authentication_method %></AuthenticationMethod>
<AuthenticationRequired><%= @authentication_required %></AuthenticationRequired>
<Branch><%= @branch %></Branch>
<LogLevel><%= @log_level %></LogLevel>
<SslCertPath><%= @ssl_cert_path || '' %></SslCertPath>
<SslCertPassword><%= @ssl_cert_password || '' %></SslCertPassword>
<UrlBase><%= @url_base || '' %></UrlBase>
<InstanceName><%= @instance_name %></InstanceName>
</Config>