Get the key ID for the repo. Usually there will be a key file, or something equivalent listed in the download instructions. The key ID can be extracted using:
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | gpg --show-keys --dry-run
Add the puppet resource to a puppet manifest. The following is an example of the puppet code that will add the repo and install the package (using mongodb as the example):
include apt
# add the official mongodb repo
apt::source { 'mongodb-org' :
comment => 'Official MongoDB repo.',
location => 'https://repo.mongodb.org/apt/ubuntu',
release => 'bionic/mongodb-org/4.0',
repos => 'multiverse',
key => {
id => '9DA31620334BD75D9DCB49F368818C72E52529D4',
server => 'keyserver.ubuntu.com',
}
}
->
# instal mongodb
package {'mongodb-org' : ensure => 'installed' }This assumes that the key is registered on the Ubuntu key server. If not, the key will need to be installed locally as a GPG file in /etc/apt/trusted.gpg.d/ — this can usually be extracted from the deb file.
The other information can be found on the package's "how to use our repos" page.
You can forward declare dependencies:
# forward declare dependencies
File['/usr/local/some_directory'] -> File['/usr/local/some_directory/some_file'] ~> Exec['/usr/bin/do_something /usr/local/some_directory/some_file']
# declare actual resources
file { '/usr/local/some_directory' :
ensure => 'directory'
}
file { '/usr/local/some_directory/some_file' :
ensure => present,
...
}
exec {'/usr/bin/do_something /usr/local/some_directory/some_file' :
refreshonly => true,
...
}
The -> means 'do the thing on the left before the thing on the right'.
The ~> means 'do the thing on the left before the thing on the right, and notify the thing on the right'. With refreshonly set to false (which is the default), the exec will always run. When set to true, the exec will only run if the thing on the left has changed.