class shiori ( $port = 8080, $dir = '/var/www/shiori', Enum['sqlite', 'mysql', 'postgresql'] $database = 'sqlite', Boolean $manage_db = true, Optional[String] $db_pass = undef, Optional[String] $db_addr = undef, String $db_user = 'shiori', String $db_name = 'shiori', ) { # on arch this is available through the aur package { 'shiori-bin': ensure => installed, } user { 'shiori': ensure => present, system => true, home => $dir, } file { $dir: ensure => directory, owner => shiori, group => shiori, mode => '0750', } file { [ "${dir}/archive", "${dir}/thumb", ] : ensure => directory, owner => shiori, group => shiori, mode => '0770', } file { "${dir}/shiori.db": owner => 'shiori', group => 'shiori', mode => '0660', } file { '/etc/systemd/system/shiori.service': ensure => file, source => 'puppet:///modules/shiori/shiori.service', } case $database { 'sqlite': { } 'mysql': { $extra_config = { 'SHIORI_DBMS' => 'mysql', 'SHIORI_MYSQL_USER' => '', } if ($manage_db) { error("Can't managae MySQL") } } 'postgresql': { $extra_config = { 'SHIORI_DBMS' => 'postgresql', 'SHIORI_PG_USER' => '', 'SHIORI_PG_PASS' => '', 'SHIORI_PG_NAME' => '', 'SHIORI_PG_HOST' => '', 'SHIORI_PG_PORT' => '', } if ($manage_db) { # create database # create database user } } } file { '/etc/conf.d/shiori': ensure => 'file', content => @("EOF") # This file is managed by Puppet. PORT=${port} SHIORI_DIR=${dir} | EOF } service { 'shiori': ensure => running, enable => true, require => [ File['/etc/systemd/system/shiori.service'], File['/etc/conf.d/shiori'], ], } # Users could be managed here, through shioris HTTP API }