From eb11c0f218b9551f405b29b18ae69ee5b09a8048 Mon Sep 17 00:00:00 2001 From: "Antonio J. Delgado" Date: Mon, 27 Nov 2023 19:19:40 +0200 Subject: [PATCH] use ruby manager --- manifests/init.pp | 120 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 107 insertions(+), 13 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index 788f75f..d786ac0 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -12,11 +12,19 @@ # [*mastodon_home*] # String path to Mastodon user home directory. Default /opt/mastodon # +# [*db_password*] +# String with Database password. +# +# [*mastodon_version*] +# String with Mastodon version (code tag) to install. Default v4.2.1 +# class mastodon ( String $ensure = 'present', String $hostname = 'mastodon.example.org', String $smtp_server = 'mail.example.org', String $mastodon_home = '/opt/mastodon', + String $db_password = '', + String $mastodon_version = 'v4.2.1', ) { case $ensure { default: { @@ -106,22 +114,108 @@ class mastodon ( system => true, require => Group['mastodon'], } - vcsrepo { 'rbenv': - path => "${mastodon_home}/.rbenv", - source => 'https://github.com/rbenv/rbenv.git', + # vcsrepo { 'rbenv': + # path => "${mastodon_home}/.rbenv", + # source => 'https://github.com/rbenv/rbenv.git', + # provider => 'git', + # owner => 'mastodon', + # group => 'mastodon', + # require => User['mastodon'], + # } + # exec { 'configure_rbenv': + # command => "${mastodon_home}/.rbenv/src/configure", + # user => 'mastodon', + # cwd => "${mastodon_home}/.rbenv/", + # creates => "${mastodon_home}/.rbenv/src/Makefile", + # require => Vcsrepo['rbenv'], + # } + # exec { 'make_rbenv': + # command => '/usr/bin/make -C src', + # user => 'mastodon', + # cwd => "${mastodon_home}/.rbenv/", + # creates => "${mastodon_home}/.rbenv/libexec/rbenv-realpath.dylib", + # require => Exec['configure_rbenv'], + # } + # file_line { 'mastodon_path': + # path => "${mastodon_home}/.bashrc/", + # line => 'export PATH="$HOME/.rbenv/bin:$PATH"', + # match => '^export PATH="$HOME/.rbenv', + # require => Vcsrepo['rbenv'], + # } + # file_line { 'mastodon_rbenv_init': + # path => "${mastodon_home}/.bashrc/", + # line => 'eval "$(rbenv init -)"', + # match => '^eval "$(rbenv init -)"', + # require => Vcsrepo['rbenv'], + # } + # vcsrepo { 'ruby_build': + # path => "${mastodon_home}/.rbenv/plugins/ruby-build", + # source => 'https://github.com/rbenv/ruby-build.git', + # provider => 'git', + # owner => 'mastodon', + # group => 'mastodon', + # require => Vcsrepo['rbenv'], + # } + # exec { 'update_ruby': + # command => "${mastodon_home}/.rbenv/bin/rbenv global 3.2.2", + # environment => [ + # 'RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.2', + # ], + # user => 'mastodon', + # cwd => "${mastodon_home}/.rbenv/", + # # creates => '', + # require => Vcsrepo['ruby_build'], + # } + # exec { '':} + rvm_system_ruby { + 'ruby-3.2.2': + build_opts => ['--with-jemalloc'], + } + rvm_gemset { + 'bundler': + name => 'bundler', + ruby_version => 'ruby-3.2.2', + require => Rvm_system_ruby['ruby-3.2.2']; + } + postgresql::server::db { 'mastodon': + user => 'mastodon', + password => postgresql::postgresql_password('mastodon', $db_password), + } + vcsrepo { 'mastodon_code': + path => "${mastodon_home}/live", + source => 'https://github.com/mastodon/mastodon.git', + revision => $mastodon_version, provider => 'git', + owner => 'mastodon', + group => 'mastodon', require => User['mastodon'], } - exec { 'configure_rbenv': - command => "${mastodon_home}/.rbenv/src/configure", - cwd => "${mastodon_home}/.rbenv/", - creates => "${mastodon_home}/.rbenv/src/Makefile", - require => Vcsrepo['rbenv'], + exec { 'config_deployment': + command => 'bundle config deployment \'true\'', + user => 'mastodon', + cwd => "${mastodon_home}/live", + # creates => "${mastodon_home}/.rbenv/libexec/rbenv-realpath.dylib", + require => Rvm_gemset['bundler'], } - exec { 'make_rbenv': - command => '/usr/bin/make -C src', - cwd => "${mastodon_home}/.rbenv/", - # creates => "${mastodon_home}/.rbenv/src/Makefile", - require => Exec['configure_rbenv'], + exec { 'config_without_devel_test': + command => 'bundle config without \'development test\'', + user => 'mastodon', + cwd => "${mastodon_home}/live", + # creates => "${mastodon_home}/.rbenv/libexec/rbenv-realpath.dylib", + require => Exec['config_deployment'], + } + exec { 'bundle_install': + command => 'bundle install -j$(getconf _NPROCESSORS_ONLN)', + user => 'mastodon', + cwd => "${mastodon_home}/live", + # creates => "${mastodon_home}/.rbenv/libexec/rbenv-realpath.dylib", + require => Exec['config_without_devel_test'], + } + exec { 'yarn_install': + command => 'yarn install --pure-lockfile', + user => 'mastodon', + cwd => "${mastodon_home}/live", + # creates => "${mastodon_home}/.rbenv/libexec/rbenv-realpath.dylib", + require => Exec['bundle_install'], } }