+++ /dev/null
----
-#Squeeze
-apt::backports: { location: 'http://httpredir.debian.org/debian-backports', key: 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553', repos: 'main contrib non-free' }
-apt::ppa_options: ~
-apt::ppa_package: ~
+++ /dev/null
----
-apt::backports: { location: 'http://httpredir.debian.org/debian', key: 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553', repos: 'main contrib non-free' }
-apt::ppa_options: ~
-apt::ppa_package: ~
+++ /dev/null
----
-#Lucid
-apt::ppa_options: ~
-apt::ppa_package: 'python-software-properties'
+++ /dev/null
----
-#Precise
-apt::ppa_options: '-y'
-apt::ppa_package: 'python-software-properties'
+++ /dev/null
----
-#Trusty
-apt::ppa_options: '-y'
-apt::ppa_package: 'software-properties-common'
+++ /dev/null
----
-apt::backports: { location: 'http://archive.ubuntu.com/ubuntu', key: '630239CC130E1A7FD81A27B140976EAF437D05B5', repos: 'main universe multiverse restricted' }
-apt::ppa_options: '-y'
-apt::ppa_package: 'python-software-properties'
+++ /dev/null
----
-apt::provider: '/usr/bin/apt-get'
-apt::keyserver: 'keyserver.ubuntu.com'
-apt::update_defaults: { frequency: 'reluctantly', timeout: ~, tries: ~ }
-apt::proxy_defaults: { ensure: ~, host: ~, port: 8080, https: false }
-apt::purge_defaults: { sources.list: false, sources.list.d: false, preferences: false, preferences.d: false }
-apt::proxy_defaults: { ensure: ~, host: ~, port: 8080, https: false }
-apt::include_defaults: { deb: true, src: false }
-apt::ppa_options: ~
-apt::ppa_package: ~
-apt::backports: ~
+++ /dev/null
----
-version: 4
-datadir: data
-hierarchy:
- - name: "Full Version"
- backend: yaml
- path: "%{facts.os.name}-%{facts.os.release.full}"
-
- - name: "Major Version"
- backend: yaml
- path: "%{facts.os.name}-%{facts.os.release.major}"
-
- - name: "Distribution Name"
- backend: yaml
- path: "%{facts.os.name}"
-
- - name: "Operating System Family"
- backend: yaml
- path: "%{facts.os.family}"
-
- - name: "common"
- backend: yaml
f
else
begin
- user_pass = parsedValue.userinfo.nil? ? nil : parsedValue.userinfo.split(':')
- parsedValue.userinfo = ''
- key = open(parsedValue, :http_basic_authentication => user_pass).read
+ # Only send basic auth if URL contains userinfo
+ # Some webservers (e.g. Amazon S3) return code 400 if empty basic auth is sent
+ if parsedValue.userinfo.nil?
+ key = parsedValue.read
+ else
+ user_pass = parsedValue.userinfo.split(':')
+ parsedValue.userinfo = ''
+ key = open(parsedValue, :http_basic_authentication => user_pass).read
+ end
rescue OpenURI::HTTPError, Net::FTPPermError => e
fail("#{e.message} for #{resource[:source]}")
rescue SocketError
# Manage APT (Advanced Packaging Tool)
#
class apt (
- Hash $update_defaults,
- Hash $purge_defaults,
- Hash $proxy_defaults,
- Hash $include_defaults,
- String $provider,
- String $keyserver,
- Optional[String] $ppa_options,
- Optional[String] $ppa_package,
- Optional[Hash] $backports,
- Hash $confs = {},
- Hash $update = {},
- Hash $purge = {},
- Hash $proxy = {},
- Hash $sources = {},
- Hash $keys = {},
- Hash $ppas = {},
- Hash $pins = {},
- Hash $settings = {},
- String $root = '/etc/apt',
- String $sources_list = "${root}/sources.list",
- String $sources_list_d = "${root}/sources.list.d",
- String $conf_d = "${root}/apt.conf.d",
- String $preferences = "${root}/preferences",
- String $preferences_d = "${root}/preferences.d",
- Hash $config_files = { conf => { path => $conf_d, ext => '' }, pref => { path => $preferences_d, ext => '.pref' }, list => { path => $sources_list_d, ext => '.list' } },
- Hash $source_key_defaults = { 'server' => $keyserver, 'options' => undef, 'content' => undef, 'source' => undef },
-) {
+ Hash $update_defaults = $apt::params::update_defaults,
+ Hash $purge_defaults = $apt::params::purge_defaults,
+ Hash $proxy_defaults = $apt::params::proxy_defaults,
+ Hash $include_defaults = $apt::params::include_defaults,
+ String $provider = $apt::params::provider,
+ String $keyserver = $apt::params::keyserver,
+ Optional[String] $ppa_options = $apt::params::ppa_options,
+ Optional[String] $ppa_package = $apt::params::ppa_package,
+ Optional[Hash] $backports = $apt::params::backports,
+ Hash $confs = $apt::params::confs,
+ Hash $update = $apt::params::update,
+ Hash $purge = $apt::params::purge,
+ Hash $proxy = $apt::params::proxy,
+ Hash $sources = $apt::params::sources,
+ Hash $keys = $apt::params::keys,
+ Hash $ppas = $apt::params::ppas,
+ Hash $pins = $apt::params::pins,
+ Hash $settings = $apt::params::settings,
+ String $root = $apt::params::root,
+ String $sources_list = $apt::params::sources_list,
+ String $sources_list_d = $apt::params::sources_list_d,
+ String $conf_d = $apt::params::conf_d,
+ String $preferences = $apt::params::preferences,
+ String $preferences_d = $apt::params::preferences_d,
+ Hash $config_files = $apt::params::config_files,
+ Hash $source_key_defaults = $apt::params::source_key_defaults
+) inherits apt::params {
if $facts['osfamily'] != 'Debian' {
fail('This module only works on Debian or derivatives like Ubuntu')
--- /dev/null
+class apt::params {
+
+ if $::osfamily != 'Debian' {
+ fail('This module only works on Debian or derivatives like Ubuntu')
+ }
+
+ $root = '/etc/apt'
+ $provider = '/usr/bin/apt-get'
+ $sources_list = "${root}/sources.list"
+ $sources_list_d = "${root}/sources.list.d"
+ $conf_d = "${root}/apt.conf.d"
+ $preferences = "${root}/preferences"
+ $preferences_d = "${root}/preferences.d"
+ $keyserver = 'keyserver.ubuntu.com'
+ $confs = {}
+ $update = {}
+ $purge = {}
+ $proxy = {}
+ $sources = {}
+ $keys = {}
+ $ppas = {}
+ $pins = {}
+ $settings = {}
+
+ $config_files = {
+ 'conf' => {
+ 'path' => $conf_d,
+ 'ext' => '',
+ },
+ 'pref' => {
+ 'path' => $preferences_d,
+ 'ext' => '.pref',
+ },
+ 'list' => {
+ 'path' => $sources_list_d,
+ 'ext' => '.list',
+ }
+ }
+
+ $update_defaults = {
+ 'frequency' => 'reluctantly',
+ 'timeout' => undef,
+ 'tries' => undef,
+ }
+
+ $proxy_defaults = {
+ 'ensure' => undef,
+ 'host' => undef,
+ 'port' => 8080,
+ 'https' => false,
+ }
+
+ $purge_defaults = {
+ 'sources.list' => false,
+ 'sources.list.d' => false,
+ 'preferences' => false,
+ 'preferences.d' => false,
+ }
+
+ $source_key_defaults = {
+ 'server' => $keyserver,
+ 'options' => undef,
+ 'content' => undef,
+ 'source' => undef,
+ }
+
+ $include_defaults = {
+ 'deb' => true,
+ 'src' => false,
+ }
+
+ case $facts['os']['name']{
+ 'Debian': {
+ case $facts['os']['release']['full'] {
+ '6.0': {
+ $backports = {
+ 'location' => 'http://httpredir.debian.org/debian-backports',
+ 'key' => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
+ 'repos' => 'main contrib non-free',
+ }
+ }
+ default: {
+ $backports = {
+ 'location' => 'http://httpredir.debian.org/debian',
+ 'key' => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
+ 'repos' => 'main contrib non-free',
+ }
+ }
+ }
+
+ $ppa_options = undef
+ $ppa_package = undef
+
+ }
+ 'Ubuntu': {
+ $backports = {
+ 'location' => 'http://archive.ubuntu.com/ubuntu',
+ 'key' => '630239CC130E1A7FD81A27B140976EAF437D05B5',
+ 'repos' => 'main universe multiverse restricted',
+ }
+
+ case $facts['os']['release']['full'] {
+ '10.04': {
+ $ppa_options = undef
+ $ppa_package = 'python-software-properties'
+ }
+ '12.04': {
+ $ppa_options = '-y'
+ $ppa_package = 'python-software-properties'
+ }
+ '14.04', '14.10', '15.04', '15.10': {
+ $ppa_options = '-y'
+ $ppa_package = 'software-properties-common'
+ }
+ default: {
+ $ppa_options = '-y'
+ $ppa_package = 'python-software-properties'
+ }
+ }
+ }
+ undef: {
+ fail('Unable to determine value for fact os["name"]')
+ }
+ default: {
+ $ppa_options = undef
+ $ppa_package = undef
+ $backports = undef
+ }
+ }
+}
$_before = Apt::Setting["list-${title}"]
- if ! $release {
+ if !$release {
if $facts['lsbdistcodename'] {
$_release = $facts['lsbdistcodename']
} else {
"dependencies": [
{"name":"puppetlabs/stdlib","version_requirement":">= 4.16.0 < 5.0.0"}
],
- "data_provider": "hiera",
+ "data_provider": null,
"operatingsystem_support": [
{
"operatingsystem": "Debian",
end
end
+ context 'release is empty string' do
+ let :facts do
+ {
+ :os => { :family => 'Debian', :name => 'Debian', :release => { :major => '7', :full => '7.0' }},
+ :lsbdistid => 'Debian',
+ :osfamily => 'Debian',
+ :puppetversion => Puppet.version,
+ }
+ end
+ let(:params) { { :location => 'hello.there', :release => '' } }
+
+ it { is_expected.to contain_apt__setting('list-my_source').with_content(/hello\.there main/) }
+ end
+
context 'invalid pin' do
let :facts do
{