Most often you will want to install packages from the main distribution repo, so a simple package resource will do:
package { 'exim4': ensure => installed }
Sometimes, you need a package that is only found in a third-party repository (an Ubuntu PPA, for example), or it might be that you need a more recent version of a package than that provided by the distribution, which is available from a third party.
On a manually-administered machine, you would normally do this by adding the repo source configuration to /etc/apt/sources.list.d
(and, if necessary, a gpg key for the repo) before installing the package. We can automate this process easily with Puppet.
In this example, we'll use the popular Percona APT repo (Percona is a MySQL consulting firm who maintain and release their own specialized version of MySQL, more information is available at http://www.percona.com/software/repositories):
Create the file
modules/admin/manifests/percona_repo...