From c8e9b56cf3b7664e980f312b75c6bfac9b276703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 3 Jan 2022 22:15:39 +0100 Subject: stuff --- modules/blog/manifests/instance.pp | 129 +++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 modules/blog/manifests/instance.pp (limited to 'modules/blog/manifests/instance.pp') diff --git a/modules/blog/manifests/instance.pp b/modules/blog/manifests/instance.pp new file mode 100644 index 0000000..dfe95be --- /dev/null +++ b/modules/blog/manifests/instance.pp @@ -0,0 +1,129 @@ +define blog::instance ( + String $blog_title = $name, + String $author, + Boolean $has_comments = false, + String $subtitle = '', + Optional[String] $vcs_repo = undef, + Optional[String] $domain = undef, + Optional[String] $domain_aliases = undef, +) { + + $root = "${blog::blog_root}/${title}" + + vcsrepo { $root: + ensure => latest, + provider => git, + source => 'https://github.com/HugoNikanor/website-blog-2.git', + revision => 'master', + # keep_local_changes => true, + owner => 'hugo', + group => 'www-data', + } + + if $vcs_repo { + vcsrepo { "${root}/entries": + ensure => latest, + provider => git, + source => $vcs_repo, + revision => 'master', + owner => 'hugo', + group => 'www-data', + } + } else { + file { "${root}/entries": + ensure => directory, + } + } + + file { "${root}/settings.php": + ensure => file, + content => epp('blog/settings.php.epp', { + author => $author, + title => $title, + subtitle => $subtitle, + has_comments => $has_comments, + }), + } + + file { "${root}/footnote": + ensure => directory, + recurse => true, + } + + $foot_files = [ + ['about.md', 'About'], + ['contact.md', 'Contact'], + ['legal.md', 'Legal'], + ['qna.md', '"Q&A"'], + ] + + $foot_files.each |$item| { + file { "${root}/footnote/${item[0]}": + source => "puppet:///modules/blog/footers/${item[0]}", + } + } + + file { "${root}/special-files.ini": + ensure => file, + content => $foot_files, + } + + if $domain { + $default = { + access_log => 'absent', + error_log => 'absent', + ssl => true, + ssl_cert => "/etc/letsencrypt/live/${certname}/fullchain.pem", + ssl_key => "/etc/letsencrypt/live/${certname}/privkey.pem", + use_default_location => false, + } + $domain_conf = { + server_name => [ $domain, ], + index_files => [ 'index.php', 'index.html', 'index.htm', ], + www_root => $blog::blog_root, + } + + $main_conf = { + "${blog_title} - server" => $default + $domain_conf, + } + + create_resources(nginx::resource::server, $main_conf) + + if $domain_aliases { + $alias_conf = { + "${blog_title} - aliases" => $default + { + server_name => [ $domain_aliases ], + server_cfg_append => { + 'return' => '301 $scheme://blog.hornquist.se$request_uri', + }, + }, + } + create_resources(nginx::resource::server, $alias_conf) + } + + nginx::resource::location { "${blog_title} - server - /": + location => '/', + try_files => ['$uri', '$uri/', '=404'], + index_files => [], + ssl => true, + autoindex => on, + server => [ "${blog_title} - server", ] + } + + nginx::resource::location { "${blog_title} - server - php": + location => '~ \.php$', + fastcgi_params => 'snippets/fastcgi-php.conf', + fastcgi => 'unix:/run/php/php-fpm.sock', + ssl => true, + server => [ "${blog_title} - server", ], + } + + nginx::resource::location { "${blog_title} - server - ht": + location => '~ /\.ht', + location_cfg_append => { deny => 'all' }, + index_files => [], + ssl => true, + server => [ "${blog_title} - server", ], + } + } +} -- cgit v1.2.3