# TODO convert to a regular type, so we can later change password # without erasing the current user define postgresql::user($password) { $sql = "CREATE ROLE ${name} ENCRYPTED PASSWORD '\${pass}' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;" exec { "psql -U postgres -c \"${sql}\" ": user => 'root', # do not leak the password on commandline environment => "pass=${password}", unless => "psql -A -t -U postgres -c '\\du ${name}' | grep '${name}'", require => Service['postgresql'], } }