- apt::key { 'jenkins':
- key => 'D50582E6',
- key_source => 'http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key',
- }
-
-### apt::pin
-
-Adds an apt pin for a certain release.
-
- apt::pin { 'karmic': priority => 700 }
- apt::pin { 'karmic-updates': priority => 700 }
- apt::pin { 'karmic-security': priority => 700 }
-
-Note you can also specifying more complex pins using distribution properties.
-
- apt::pin { 'stable':
- priority => -10,
- originator => 'Debian',
- release_version => '3.0',
- component => 'main',
- label => 'Debian'
- }
-
-If you wish to pin a number of packages you may specify the packages as a space
-delimited string using the `packages` attribute or pass in an array of package
-names.
-
-### apt::hold
-
-When you wish to hold a package in Puppet is should be done by passing in
-'held' as the ensure attribute to the package resource. However, a lot of
-public modules do not take this into account and generally do not work well
-with an ensure of 'held'.
-
-There is an additional issue that when Puppet is told to hold a package, it
-will hold it at the current version installed, there is no way to tell it in
-one go to install a specific version and then hold that version without using
-an exec resource that wraps `dpkg --set-selections` or `apt-mark`.
-
-At first glance this could also be solved by just passing the version required
-to the ensure attribute but that only means that Puppet will install that
-version once it processes that package. It does not inform apt that we want
-this package to be held. In other words; if another package somehow wants to
-upgrade this one (because of a version requirement in a dependency), apt
-should not allow it.
-
-In order to solve this you can use apt::hold. It's implemented by creating
-a preferences file with a priority of 1001, meaning that under normal
-circumstances this preference will always win. Because the priority is > 1000
-apt will interpret this as 'this should be the version installed and I am
-allowed to downgrade the current package if needed'.
-
-With this you can now set a package's ensure attribute to 'latest' but still
-get the version specified by apt::hold. You can do it like this:
-
- apt::hold { 'vim':
- version => '2:7.3.547-7',
- }
-
-Since you might just want to hold Vim at version 7.3 and not care about the
-rest you can also pass in a version with a glob:
-
- apt::hold { 'vim':
- version => '2:7.3.*',
- }
-
-### apt::ppa
-
-Adds a ppa repository using `add-apt-repository`.
-
- apt::ppa { 'ppa:drizzle-developers/ppa': }
-
-### apt::release
-
-Sets the default apt release. This class is particularly useful when using repositories, like Debian, that are unstable in Ubuntu.
-
- class { 'apt::release':
- release_id => 'precise',
- }
-
-### apt::source
-
-Adds an apt source to `/etc/apt/sources.list.d/`.
-
- apt::source { 'debian_unstable':
- comment => 'This is the iWeb Debian unstable mirror',
- location => 'http://debian.mirror.iweb.ca/debian/',
- release => 'unstable',
- repos => 'main contrib non-free',
- required_packages => 'debian-keyring debian-archive-keyring',
- key => '46925553',
- key_server => 'subkeys.pgp.net',
- pin => '-10',
- include_src => true,
- include_deb => true
- }
-
-If you would like to configure your system so the source is the Puppet Labs APT repository
-
- apt::source { 'puppetlabs':
- location => 'http://apt.puppetlabs.com',
- repos => 'main',
- key => '4BD6EC30',
- key_server => 'pgp.mit.edu',
- }
-
-### Facts
-
-There are a few facts included within the apt module describing the state of the apt system:
-
-* `apt_updates` - the number of updates available on the system
-* `apt_security_updates` - the number of updates which are security updates
-* `apt_package_updates` - the package names that are available for update. On Facter 2.0 and newer this will be a list type, in earlier versions it is a comma delimitered string.
-
-#### Hiera example
-<pre>
+```puppet
+apt::source { 'debian_unstable':
+ comment => 'This is the iWeb Debian unstable mirror',
+ location => 'http://debian.mirror.iweb.ca/debian/',
+ release => 'unstable',
+ repos => 'main contrib non-free',
+ pin => '-10',
+ key => {
+ 'id' => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
+ 'server' => 'subkeys.pgp.net',
+ },
+ include => {
+ 'src' => true,
+ 'deb' => true,
+ },
+}
+```
+
+To use the Puppet Apt repository as a source:
+
+```puppet
+apt::source { 'puppetlabs':
+ location => 'http://apt.puppetlabs.com',
+ repos => 'main',
+ key => {
+ 'id' => '6F6B15509CF8E59E6E469F327F438280EF8D349F',
+ 'server' => 'pgp.mit.edu',
+ },
+}
+```
+
+### Configure Apt from Hiera
+
+Instead of specifying your sources directly as resources, you can instead just include the `apt` class, which will pick up the values automatically from hiera.
+
+```yaml