Skip to content

Instantly share code, notes, and snippets.

@bdotdub
Created December 13, 2009 01:05
Show Gist options
  • Save bdotdub/255184 to your computer and use it in GitHub Desktop.
Save bdotdub/255184 to your computer and use it in GitHub Desktop.
# Taken from http://reductivelabs.com/trac/puppet/wiki/Recipes/SimpleText
define ensure_key_value($file, $key, $value, $delimiter = " ") {
# append line if "$key" not in "$file"
exec { "echo '$key$delimiter$value' >> $file":
unless => "grep -qe '^$key[[:space:]]*$delimiter' -- $file",
path => "/bin:/usr/bin"
}
# update it if it already exists...
exec { "sed -i '' 's/^$key[[:space:]]*$delimiter.*$/$key$delimiter$value/g' $file":
unless => "grep -xqe '$key[[:space:]]*$delimiter[[:space:]]*$value' --$file",
path => "/bin:/usr/bin"
}
}
class postfix::mail_sink {
Exec {
cwd => "/etc/postfix",
path => "/bin:/sbin:/usr/bin:/usr/sbin",
}
service { "org.postfix.master":
ensure => running,
enable => true,
subscribe => Exec[aliasdb];
}
file { "/etc/postfix/aliases.inc":
content => inline_template("mailsink: /web/mailsink/mail\n<%= ENV['SUDO_USER'] -%>: mailsink\n"),
replace => true,
backup => true;
}
ensure_key_value { main_postfix_config:
file => "/etc/postfix/main.cf",
key => "inet_interfaces",
value => "localhost",
delimiter => " = ";
}
exec { generate_transport_map:
command => "postmap transport",
require => Ensure_key_value[main_postfix_config];
}
file { "/etc/postfix/aliases":
source => "/etc/postfix/aliases.inc",
backup => true,
replace => true,
owner => root,
group => wheel,
require => File["/etc/postfix/aliases.inc"];
}
exec { add_etc_passwd_alias:
command => "cat /etc/passwd | cut -d: -f1 | awk ' { print \$1 \": filestore\" } ' >> /etc/postfix/aliases",
require => File["/etc/postfix/aliases"];
}
exec { postalias:
command => "postalias aliases",
require => Exec[add_etc_passwd_alias];
}
exec { aliasdb:
command => "/bin/cp -p /etc/postfix/aliases.db /etc/aliases.db",
require => Exec[postalias]
}
}
include postfix::mail_sink
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment