From 8a045e5993950970f075aae5fa0c039e2b308062 Mon Sep 17 00:00:00 2001 From: "Antonio J. Delgado" Date: Sun, 26 Nov 2023 12:59:01 +0200 Subject: [PATCH] Add initial code --- manifests/init.pp | 85 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 manifests/init.pp diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000..224ebca --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,85 @@ +# Class to install a Mastodon instance +# +# [*ensure*] +# String defining if is present or absent +# +# [*hostname*] +# String with the full qualified hostname of the instance. There must be a DNS record for it. +# +# [*smtp_server*] +# String with the SMTP server to use. +# +class mastodon ( + String $ensure = 'present', + String $hostname = 'mastodon.example.org', + String $smtp_server = 'mail.example.org' +) { + case $ensure { + default: { + $package_ensure = 'installed' + $directory_ensure = 'directory' + $link_ensure = 'link' + $service_ensure = 'running' + $file_ensure = 'present' + } + /^(absent|delete|uninstall|remove|unregister)$/: { + $package_ensure = 'absent' + $directory_ensure = 'absent' + $link_ensure = 'absent' + $file_ensure = 'absent' + $service_ensure = 'stopped' + $cron_ensure = 'absent' + } + } + $packages = [ + 'apt-transport-https', + 'autoconf', + 'bison', + 'build-essential', + 'ca-certificates', + 'certbot', + 'ffmpeg', + 'file', + 'g++', + 'gcc', + 'git-core', + 'gnupg', + 'imagemagick', + 'libffi-dev', + 'libgdbm-dev', + 'libicu-dev', + 'libidn11-dev', + 'libjemalloc-dev', + 'libncurses5-dev', + 'libpq-dev', + 'libprotobuf-dev', + 'libreadline6-dev', + 'libssl-dev', + 'libxml2-dev', + 'libxslt1-dev', + 'libyaml-dev', + 'lsb-release', + 'nginx', + # 'nodejs', + 'pkg-config', + # 'postgresql-contrib', + # 'postgresql', + 'protobuf-compiler', + 'python3-certbot-nginx', + # 'redis-server', + # 'redis-tools', + 'wget', + 'zlib1g-dev', + ] + if (!defined(Package[$packages])) { + package { $packages: + ensure => $package_ensure, + } + } + class { 'nodejs': + repo_url_suffix => '16.x', + } + class { 'postgresql::server': + } + include ::redis +}