Installing and configuring postgresql 9.3 on ubuntu 13.10 using puppet
Dunno if it was true when you wrote your question, but the puppetlabs/postgresql module does some pretty clever stuff with versions that are not standard for your OS distro, including installing the required repository.

Snippets from my config:

In one of my puppet classes I call:

    class { 'postgresql::globals':
      encoding =&gt; hiera('postgresql::globals::encoding', 'UTF8'),
      locale =&gt; hiera('postgresql::globals::locale', 'C'),
      manage_package_repo =&gt; hiera('postgresql::globals::manage_package_repo', false),
      version =&gt; hiera('postgresql::globals::version', undef),
      notify =&gt; Class['postgresql::server', 'postgresql::client'],
    }


and in my hiera config data I have:

postgresql::globals::version: "9.3"
postgresql::globals::manage_package_repo: true


Using hiera like this is optional of course, but it gives you a nice way to use different versions on different hosts.  On later versions of puppet (at least 3.x) you can override postgresql::globals variables without needing that to be part of how you call the package.

You won't need to do stuff from source here, but if you did, I'd recommend that you should build your own package rather than try to automate the build process through puppet.  Avoid it as far as possible though, since it sets you up to do ongoing maintenance of that package.