define ikiwiki::instance( $ensure = 'present', $base_url = $domain, $description = $title, $adminuser = 'yourname', $adminemail = 'me@example.org', $account_creation_password = false, $add_plugins = false, $disable_plugins = false, $protocol = 'https', $owner = $name, $group = $name, $cgi = '1', $discussion = '1', $manage_ssh_key = false, $home = "/home/${owner}", ) { case $ensure { 'present': { file { "/etc/ikiwiki/$name.setup": ensure => present, content => template('ikiwiki/ikiwiki.setup.erb'), owner => root, group => $group, mode => '640', notify => Exec["ikiwiki_refresh_${name}"], } exec { "ikiwiki_refresh_${name}": command => "/usr/local/sbin/ikiwiki-refresh $name $owner $group", user => root, refreshonly => true, } if !defined(File["${ikiwiki::sites_folder}/${name}"]) { file { "${ikiwiki::sites_folder}/${name}": ensure => directory, owner => root, group => root, mode => '0755', } } if !defined(File["${ikiwiki::sites_folder}/${name}/ikiwiki"]) { file { "${ikiwiki::sites_folder}/${name}/ikiwiki": ensure => directory, owner => $owner, group => $group, recurse => true, require => File["${ikiwiki::sites_folder}/${name}"], } } file { "${ikiwiki::sites_folder}/${name}/ikiwiki_src": ensure => directory, owner => $owner, group => $group, recurse => true, notify => Exec["ikiwiki_refresh_${name}"], require => File["${ikiwiki::sites_folder}/${name}"], } file { "${ikiwiki::git_folder}/${name}.git/hooks/post-update": ensure => present, owner => $owner, group => $ikiwiki::git_implementation, mode => '6550', require => File["/etc/ikiwiki/$name.setup", "${ikiwiki::sites_folder}/${name}/ikiwiki", "${ikiwiki::sites_folder}/${name}/ikiwiki_src"], } file { "${ikiwiki::sites_folder}/${name}/ikiwiki/ikiwiki.cgi": ensure => present, owner => $owner, group => $ikiwiki::www_user, mode => '6550', require => File["/etc/ikiwiki/$name.setup", "${ikiwiki::sites_folder}/${name}/ikiwiki", "${ikiwiki::sites_folder}/${name}/ikiwiki_src"], } } 'absent': { file { "/etc/ikiwiki/$name.setup": ensure => absent, } } } # SSH key management required a defined resource "ssh_local_key" if $manage_ssh_key == true { nodo::subsystem::ssh::local_key { "ikiwiki-${name}": ensure => $ensure, owner => $owner, group => $group, home => $home, source => $ensure ? { 'present' => "puppet:///ssh/ikiwiki/${name}_id_rsa", default => undef, } } } }