puppet-prod/site/profiles/manifests/apt/base.pp
Ben Vincent 87f174df33 Added Debian components
* added debian components for Debian12 and Debian11
  * added apt module to puppetfile
  * removed /etc/apt/sources.list management, done by apt module
  * added profiles::apt::puppet7
2023-07-01 22:38:25 +10:00

72 lines
2.3 KiB
Puppet

# This class manages the configuration of base APT repositories
#
# Parameters:
# - $managed_repos: An array of repositories to manage, such as 'base', 'security',
# 'updates', 'backports' (optional)
# - $components: An array of components for the repositories (e.g., 'main', 'contrib')
# - $mirrorurl: The base URL of the mirror for the base repository
# - $secureurl: The base URL of the mirror for the security repository
#
# Dependencies:
# - Puppet facts: The class relies on certain facts about the target system,
# including the OS architecture and distribution codename.
#
# Description:
# This class manages the configuration of base APT repositories on the target system.
# It supports the management of repositories specified in the $managed_repos parameter,
# including 'base', 'security', 'updates', and 'backports'. The class retrieves necessary
# information from Puppet facts, such as the OS architecture and distribution codename.
# It creates apt::source resources for each repository, setting the appropriate location,
# repos, and release values based on the provided parameters.
#
# Example usage:
# class { 'profiles::apt::base':
# managed_repos => ['base', 'security'],
# components => ['main', 'contrib'],
# mirrorurl => 'http://mirror.example.com',
# secureurl => 'http://security.example.com',
# }
class profiles::apt::base (
Array[String] $managed_repos,
Array[String] $components,
String $mirrorurl,
String $secureurl,
) {
$codename = $facts['os']['distro']['codename']
# Join the array into a space-separated string
$repo_components = join($components, ' ')
if 'base' in $managed_repos {
apt::source { 'base':
location => $mirrorurl,
repos => $repo_components,
release => $codename,
}
}
if 'security' in $managed_repos {
apt::source { 'security':
location => $secureurl,
repos => $repo_components,
release => "${codename}-security",
}
}
if 'updates' in $managed_repos {
apt::source { 'updates':
location => $mirrorurl,
repos => $repo_components,
release => "${codename}-updates",
}
}
if 'backports' in $managed_repos {
apt::source { 'backports':
location => $mirrorurl,
repos => $repo_components,
release => "${codename}-backports",
}
}
}