diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-01-03 22:15:39 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-01-03 22:21:50 +0100 |
commit | e086bd549a0bb6cc848a4d768003d7607f6e7624 (patch) | |
tree | deea830cb90077536e7a88f9b0d3af5a9677a0b5 /manifests/instance.pp | |
parent | Blog working. (diff) | |
download | website_blog_2-e086bd549a0bb6cc848a4d768003d7607f6e7624.tar.gz website_blog_2-e086bd549a0bb6cc848a4d768003d7607f6e7624.tar.xz |
stuff
Diffstat (limited to 'manifests/instance.pp')
-rw-r--r-- | manifests/instance.pp | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/manifests/instance.pp b/manifests/instance.pp new file mode 100644 index 0000000..dfe95be --- /dev/null +++ b/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", ], + } + } +} |