# Class: apt # # This module manages the initial configuration of apt. # # Parameters: # Both of the parameters listed here are not required in general and were # added for use cases related to development environments. # disable_keys - disables the requirement for all packages to be signed # always_apt_update - rather apt should be updated on every run (intended # for development environments where package updates are frequent # Actions: # # Requires: # # Sample Usage: # class { 'apt': } class apt( $always_apt_update = false, $disable_keys = undef, $proxy_host = false, $proxy_port = '8080', $purge = false ) { include apt::params validate_bool($purge) $refresh_only_apt_update = $always_apt_update? { true => false, false => true } if ! defined(Package["python-software-properties"]) { package { "python-software-properties": } } file { "sources.list": path => "${apt::params::root}/sources.list", ensure => present, owner => root, group => root, mode => 644, content => $purge ? { false => undef, true => "# Repos managed by puppet.\n", }, } file { "sources.list.d": path => "${apt::params::root}/sources.list.d", ensure => directory, owner => root, group => root, purge => $purge, recurse => $purge, } exec { "apt_update": command => "${apt::params::provider} update", subscribe => [ File["sources.list"], File["sources.list.d"] ], refreshonly => $refresh_only_apt_update, } case $disable_keys { true: { file { "99unauth": content => "APT::Get::AllowUnauthenticated 1;\n", ensure => present, path => "/etc/apt/apt.conf.d/99unauth", } } false: { file { "99unauth": ensure => absent, path => "/etc/apt/apt.conf.d/99unauth", } } undef: { } # do nothing default: { fail("Valid values for disable_keys are true or false") } } if($proxy_host) { file { 'configure-apt-proxy': path => '/etc/apt/apt.conf.d/proxy', content => "Acquire::http::Proxy \"http://${proxy_host}:${proxy_port}\";", } } }