summaryrefslogtreecommitdiff
path: root/modules/blog/manifests/instance.pp
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-01-03 22:15:39 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-01-03 22:21:50 +0100
commitc8e9b56cf3b7664e980f312b75c6bfac9b276703 (patch)
tree6a1a2dc13e88fe0b661b550d685e578f03a19051 /modules/blog/manifests/instance.pp
parentAllow lists in networkd config. (diff)
downloadwebdav_server-c8e9b56cf3b7664e980f312b75c6bfac9b276703.tar.gz
webdav_server-c8e9b56cf3b7664e980f312b75c6bfac9b276703.tar.xz
stuff
Diffstat (limited to '')
-rw-r--r--modules/blog/manifests/instance.pp129
1 files changed, 129 insertions, 0 deletions
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&amp;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", ],
+ }
+ }
+}