Commit graph

289 commits

Author SHA1 Message Date
Morgan Haskel
044fb5faf5 Add testing, docs, and examples for backports 2015-04-12 11:25:47 -07:00
Daniele Sluijters
37043dff85 backports: Add support back for backports.
This is currently lacking tests.
2015-04-09 15:44:20 -07:00
Daniele Sluijters
791012b2c9 source: Support complex pin, like key does.
This adds support for passing in a full pin declaration as the pin
parameter on a source declaration.

It keeps the old behaviour intact, you can still simply do `pin => '10'`
and it will pin on origin with a priority of 10.

Should that not be what you want you can now pass in a full pin
declaration instead. We make no assumptions here, whatever you pass in
will be passed through to pin as-is with the exception of the values for
`ensure` and `before` which are always overridden by us to ensure
everything keeps working as designed.
2015-04-09 15:44:20 -07:00
Morgan Haskel
dc746734f1 Merge remote-tracking branch 'upstream/master' into merge_master_to_next 2015-03-25 18:32:09 -04:00
Morgan Haskel
911c4de90f (MODULES-1156, MODULES-769) Remove unnecessary anchors
`apt::ppa` and `apt::setting` don't actually include `apt::update` so
anchors are unnecessary. Move `apt` to use contain instead of anchors,
since it wasn't anchoring properly anyways. Update the tests to make
sure it can have settings and ppas depending on each other without
cycles.
2015-03-24 18:18:14 -04:00
Morgan Haskel
df47ca7ff4 Remove update['always'] = true support
We don't really need both of `update['always'] = true` and
`update['frequency'] = 'always'`.
2015-03-18 13:52:12 -07:00
Patrick Gansterer
61a4fb6979 Fix gpg key checking warings after f588f26
Use the full fingerprint for all keys to silence the warning.
2015-03-16 19:34:24 +01:00
Mikko Pesari
3799e3a23c unattended_upgrades: Allow changing legacy_origin
This enables using Origins-Pattern in Ubuntu.
2015-03-13 14:50:16 -07:00
Morgan Haskel
0c35704245 Make installation of software-properties optional
This is cherry-picked from the PPA cleanup happening for the 2.0.0 release.

Conflicts:
	manifests/params.pp
	manifests/ppa.pp
2015-03-13 13:38:38 -07:00
Morgan Haskel
79db539f33 Inheritance of apt::params means it can't be private
Otherwise, if another module has `class { 'apt': }` in it everything
fails, as `$caller_module_name` will be the other module name.
2015-03-10 17:16:43 -07:00
Daniele Sluijters
41a2725683 apt::source: Make location mostly required.
In what universe does it make sense to create a `sources.list.d` entry
for a repository **without** specifying where this repository is?
😖

😞 😩 😧 😱

Only when removing the resource should a location not be required.
2015-03-06 17:40:45 +01:00
Leslie Carr
4802a6fc77 MODULES-1827 adding Cumulus Linux detection
the apt module did not correctly detect Cumulus Linux with lsbdistid.
This change adds several lines in params.pp to detect Cumulus Linux and
set $distid and $distcodename
2015-03-05 16:56:03 -08:00
Daniele Sluijters
90bade9561 apt::source: Rename trusted_source.
It is weird that `trusted_source` would default to `false` as that would
imply that we normally don't trust our sources. This is opposite to the
truth, by default we trust them but only if the Releases file can be
verified (meaning it is signed by a GPG key known to apt).

What we were telling apt is that it should trust this source even if the
Releases file and the repository is unsigned. This is better captured
with `allow_unsigned` and better highlights the danger of what you're
doing, installing packages from a source we cannot authenticate.
2015-03-05 20:23:38 +01:00
Daniele Sluijters
a220dcf08c apt::source: Merge include_* options into hash.
This makes its behaviour similar to the `update`, `proxy` and `purge`
hashes on the main classes bringing its API more in line with the rest
of the module.
2015-03-05 17:37:51 +01:00
Daniele Sluijters
1c707c7d32 apt::params: Complete $xfacts.
`$xfacts` now contains and guards all `lsb*` facts. Looking up any
`lsb*`-related fact should now always be done through `$::apt::xfacts`
to ensure that the values are always set to either the value of the fact
or undef. This avoids all sorts of kerfuffles with strict variables.
2015-03-03 18:07:48 +01:00
Morgan Haskel
001e3a42b9 Merge pull request #449 from puppetlabs/daenney/fix-strict-vars
apt: Fix all strict variable cases.
2015-03-03 08:54:27 -08:00
Daniele Sluijters
c57d2dd5dd apt: Fix all strict variable cases.
A few of these fixes are absolutely horrendous but we have no choice as
we need to stay current- and future-parser compatible for now.

Once we can go Puppet 4 only we can use the `$facts` hash lookup instead
which will return undef/nil for things that aren't set instead of them
not being defined at all.
2015-03-03 17:33:14 +01:00
Daniele Sluijters
7a35ea0355 apt::setting: Remove file_perms.
This was a great idea but is pretty pointless. It's also not being used
by anything and not exposed as a switch on the main class so it would
almost never affect any behaviour.
2015-03-02 20:37:01 +01:00
Daniele Sluijters
0cb48b0c47 apt:🔑 Be explicit about the keyserver.
The behaviour of passing down undef through multiple layers gets fuzzy
so for now be explicit about the keyserver.

Once Puppet 4 is out and this behaviour has been crystallised and tested
we can revisit it.
2015-03-01 14:49:04 +01:00
Daniele Sluijters
061bc49463 apt:🔑 Rename $key to $id to match apt_key. 2015-03-01 14:40:17 +01:00
Daniele Sluijters
ea4f615735 apt::source: Allow passing in a complex key.
Turn `$key` into something that accepts a string or a hash of four keys
representing the different options that can be passed on to `apt::key`.
2015-03-01 14:40:17 +01:00
Daniele Sluijters
0f3bdcdf5a apt(::key|_key) Remove the key.*_ prefixes.
Remove a lot of the redundant `key_` prefixes on `apt::key` and the
`keyserver_` prefix on `apt_key`.
2015-03-01 14:20:46 +01:00
Daniele Sluijters
95ae9ab48f apt: Add settings, keys and ppas.
* Allow any configuration of apt to be done through data bindings by
  passing in hashes representing the resources.
* Switch apt::ppa to use `distid` as set in `apt::params. This makes
  `apt::ppa` also work for LinuxMint.
2015-03-01 14:20:45 +01:00
Daniele Sluijters
fe228435b1 apt: Change how update is managed.
* Instead of having 4 options controlling purging we now have a single
  hash with four possible keys.
* Include `apt::update` only _after_ we've assembled the `$_update`
  hash.
2015-03-01 13:17:47 +01:00
Daniele Sluijters
a1ce8bdea4 apt: Change how purging is managed.
* Instead of having 4 options controlling purging we now have a single
  hash with four possible keys.
* We purge everything by default.
* `/etc/apt/preferences` is now always managed.
* Add missing `mode` to some of the files.
2015-02-28 16:50:31 +01:00
Daniele Sluijters
d81c3d9476 apt: Add proxy support on the class.
Re-introduce proxy support at the class level. Needing to configure a
proxy is such a common scenario that having it on the class is a
reasonable thing. It also affects `apt::ppa`.

Change `apt::ppa` to no longer have its own `proxy` parameter but use
the proxy as configured on the main `apt` class.
2015-02-27 21:14:24 +01:00
Morgan Haskel
0475e50be8 Make apt::setting notify Exec['apt_update'] by default
Can be disabled by setting `notify_update => false`
2015-02-26 12:44:06 -08:00
Daniele Sluijters
d261d8f11b apt::setting: Parse type and name from title.
Instead of having two additional parameters, `base_name` and
`setting_type` simply parse it from `title`.

We need to prefix most resources with `list-`, `conf-`, or `pref-` any
way to avoid duplicate resources so we might as well leverage that.
2015-02-26 20:15:42 +01:00
Daniele Sluijters
e588ab622b Merge pull request #443 from mhaskel/proxy_updates
proxy_* params were removed from class apt
2015-02-26 18:00:17 +01:00
Morgan Haskel
351c8d5941 Convert to use apt::setting instead of file resources
This adds consistency across the module
2015-02-25 10:24:56 -08:00
Morgan Haskel
3e44b685d2 proxy_* params were removed from class apt
Add them to PPA since they were being used there, and add a placeholder
example for setting up the proxy files.
2015-02-25 09:56:24 -08:00
Daniele Sluijters
1c0c6f106a Merge pull request #442 from mhaskel/add_base_name
Add base_name parameter to apt::setting
2015-02-25 18:22:37 +01:00
Daniele Sluijters
fd71aedda7 Merge pull request #440 from mhaskel/fix_setting_validation
Allow priorities to be zero-padded
2015-02-25 18:22:04 +01:00
Morgan Haskel
1236ecff2c Add base_name parameter to apt::setting
This allows you to work around duplicate resource issues when you have
settings of different types with the same name. When the files are built
it is path/${priority}${base_name}${extension}.
2015-02-25 07:37:16 -08:00
Morgan Haskel
e0f058cc20 Allow priorities to be zero-padded 2015-02-25 07:33:05 -08:00
Daniele Sluijters
3b5145bf51 apt::params: Make the class private.
Prevent direct access to apt::params. This will ensure that any other
module cannot blindly access apt::params and get settings that have been
potentially overridden at the apt level.

Our own module still can since any class in apt has a module_name of
'apt' but that's up to us to prevent from happening.

Every setting must now be accessed by a qualified lookup into the apt
namespace.
2015-02-24 21:43:36 +01:00
Morgan Haskel
1b6e046bea PPA Cleanup, pt 1
Make the code much cleaner, but don't make a t&p.
2015-02-22 14:44:27 -08:00
Morgan Haskel
10f313cfb4 Convert apt::source to use apt::setting
May as well use the define since we added it
2015-02-21 15:26:48 -08:00
Morgan Haskel
0a178c3382 Cleanup for apt::source
* Update `release` to default to `$::lsbdistcodename`
* Default `include_src` to false
* Validate more things!
* Stop redefining variables from `apt::params`
2015-02-21 15:26:48 -08:00
Daniele Sluijters
7e7e3e2f50 Merge pull request #435 from mhaskel/setting_fix
Type is a reserved word in puppet 4
2015-02-22 00:22:59 +01:00
Morgan Haskel
7c5a62f13e Stop redeclaring variables from params
It really seems unnecessary.
2015-02-21 12:18:15 -08:00
Morgan Haskel
4f4d8aeafd Type is a reserved word in puppet 4
So replace `type` with `setting_type` in apt::setting
2015-02-21 11:50:00 -08:00
Morgan Haskel
e75e603d33 Merge pull request #428 from puppetlabs/daenney/apt-setting
apt: Add apt::setting defined type.
2015-02-21 11:40:05 -08:00
Daniele Sluijters
76c88af041 apt: Add apt::setting defined type.
This is a 'base' type. It's a simple wrapper around a file which takes
`type`, `ensure`, `content`, `source` and `file_perms`. It is intended
for usage by `apt::conf`, `apt::source` and an upcoming `apt::pref`.
2015-02-21 20:13:01 +01:00
Daniele Sluijters
92c405b19c Merge pull request #430 from mhaskel/fix_typo
Fix typo from #426
2015-02-20 22:06:50 +01:00
Morgan Haskel
12a358912a Fix typo from #426
Too many `$`s
2015-02-20 10:55:47 -08:00
Morgan Haskel
0d9bab38cc Remove 'include apt::update'
It is included in `class apt`, and there are no promises about anything
working without that.
2015-02-20 10:47:35 -08:00
Morgan Haskel
59c362a2c1 Merge pull request #426 from puppetlabs/daenney/fix-missing-param-and-naming
apt::params: Add two missing entries, use them.
2015-02-19 16:41:27 -08:00
Daniele Sluijters
3e407d70e0 apt::params: Add two missing entries, use them. 2015-02-20 01:06:26 +01:00
Morgan Haskel
bb3a1f0af0 Remove required packages
I'm not entirely clear on the history behind this feature, and this
feels sort of hack-y. If you could explain why this is needed that would
be awesome, or if it isn't just merge this :)
2015-02-19 15:39:14 -08:00