puppet-wmdeit_nextcloud/manifests/init.pp

204 lines
3.8 KiB
Puppet

#
#
#
class wmdeit_nextcloud(
$instanceid,
$passwordsalt,
$secret,
$trusted_domains =[] ,
$main_domain,
$ext_url = "https://$main_domain",
$install_dir = "/var/www/nextcloud",
$distfile = "nextcloud-19.0.1.zip",
$sourcefile = "https://download.nextcloud.com/server/releases/nextcloud-19.0.1.zip",
$redis_password = undef,
$db_port = undef,
$db_user = "nextcloud",
$db_password = undef,
$db_host = "localhost",
$db_name = "nextcloud",
$db_type = "mysql",
$db_prefix = "oc_",
$data_dir = "$install_dir/data",
$nc_user = "www-data",
$nc_group = "www-data",
$php_version = "7.4",
$php_manage_repos = true,
$create_config = false
)
{
class { 'apache':
mpm_module => 'prefork',
}
class { 'apache::mod::php':
php_version=>$php_version
}
class { '::php::globals':
php_version => $php_version,
config_root => "/etc/php/$php_version",
}->
class { '::php':
manage_repos => $php_manage_repos,
fpm => false,
extensions => {
zip => {},
mbstring => {},
gd => {},
curl => {},
pgsql => {},
mysql => {},
ldap => {},
intl => {},
imagick => {},
redis => {},
apcu => {},
bcmath => {},
gmp => {},
},
settings => {
'PHP/memory_limit' => '512M',
}
}
archive { "/tmp/$distfile":
ensure => present,
source => $sourcefile,
extract_path => "/var/www",
extract => true,
cleanup => true,
checksum => $checksum,
checksum_type => $checksum_type,
creates => "$install_dir",
require => Class["apache"]
} ->
apache::vhost { $main_domain:
serveraliases => $trusted_domains,
port => '80',
docroot => $install_dir,
docroot_owner => 'www-data',
docroot_group => 'www-data',
} ->
exec { 'ncperms':
command => "/bin/chown -R www-data:www-data $install_dir",
subscribe => Archive["/tmp/$distfile"],
refreshonly => true,
require => Class["apache"]
}
if $create_config
{
file { "$install_dir/config/config.php":
require => Exec['ncperms'],
ensure => file,
content => template("wmdeit_nextcloud/config.php.erb")
}
}
exec {"/bin/mkdir -p $data_dir":
require => Exec['ncperms'],
creates => $data_dir
} ->
file {$data_dir:
ensure => directory,
owner => $nc_user,
group => $nc_group
} ->
file {"$data_dir/.ocdata":
ensure => file,
owner => $nc_user,
group => $nc_group
} ->
file {"/etc/php/$php_version/apache2/php.ini":
ensure => file,
content => template("wmdeit_nextcloud/php.ini.erb")
}
cron {'nc_cron':
ensure => present,
user => 'www-data',
command => '/usr/bin/php /var/www/html/cron.php',
minute => '*/15',
}
class {'redis':
bind => '127.0.0.1',
masterauth => $redis_password
}
include java
package {"elasticsearch":
ensure => installed
}
# class { 'elasticsearch':
# status => 'enabled',
# version => '7.8.0',
# ensure => absent
# }
# elasticsearch::instance { 'es-01': }
#class {"wmdeit_nextcloud::solr":
#}
}
class wmdeit_nextcloud::solr
{
###
# solr
package {["openjdk-11-jdk","lsof"]:
ensure => installed
}
file {"/opt":
ensure => directory
} ->
archive { "/tmp/solr-8.6.0.tgz":
ensure => present,
source => "https://downloads.apache.org/lucene/solr/8.6.0/solr-8.6.0.tgz",
extract_path => "/opt/",
extract => true,
cleanup => false,
checksum => $checksum,
checksum_type => $checksum_type,
creates => "/opt/solr-8.6.0",
} ->
file { '/opt/solr':
ensure => link,
target => "/opt/solr-8.6.0",
} ->
group{"solr":
ensure => present
} ->
user{"solr":
ensure => present
}->
file { '/opt/solr/server/logs':
ensure => directory,
owner => 'solr',
group => 'solr',
}->
exec{ '/opt/solr/bin/solr start':
user => 'solr',
}
}