From d48283734cc92400488721eb42b705465cc0fa13 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Sat, 1 Jul 2023 23:10:29 +1000 Subject: [PATCH] Added a new profile to manage common packages * will by default pull data from hiera * could change it on a per-distro/role basis * requires stdlib for ensure_packages --- hieradata/common.yaml | 18 ++++++++++++++++ site/profiles/manifests/base.pp | 5 +++++ site/profiles/manifests/base/packages.pp | 27 ++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 site/profiles/manifests/base/packages.pp diff --git a/hieradata/common.yaml b/hieradata/common.yaml index a96f967..67fb423 100644 --- a/hieradata/common.yaml +++ b/hieradata/common.yaml @@ -3,6 +3,24 @@ profiles::base::ntp_servers: - 0.au.pool.ntp.org - 1.au.pool.ntp.org +profiles::base::packages::common: + - ccze + - curl + - dstat + - htop + - mtr + - ncdu + - neovim + - python3 + - screen + - strace + - sudo + - tmux + - vim + - vnstat + - wget + - zsh + profiles::puppet::autosign::subnet_ranges: - '198.18.17.0/24' diff --git a/site/profiles/manifests/base.pp b/site/profiles/manifests/base.pp index fbb12b8..5a5493c 100644 --- a/site/profiles/manifests/base.pp +++ b/site/profiles/manifests/base.pp @@ -16,4 +16,9 @@ class profiles::base ( fail("Unsupported OS family ${facts['os']['family']}") } } + + class { 'profiles::base::packages': + packages => hiera('profiles::base::packages::common'), + ensure => 'installed', + } } diff --git a/site/profiles/manifests/base/packages.pp b/site/profiles/manifests/base/packages.pp new file mode 100644 index 0000000..6c15811 --- /dev/null +++ b/site/profiles/manifests/base/packages.pp @@ -0,0 +1,27 @@ +# This class manages the installation of packages for the base profile +# +# Parameters: +# - $packages: An array of package names to be installed (optional) +# +# Description: +# This class installs a list of packages specified in the $packages parameter +# using the `package` resource from Puppet. Each package in the array is installed +# with the `ensure => installed` attribute, ensuring that the package is present +# on the target system. By default, the class retrieves the package list from Hiera +# using the key 'profiles::base::packages::common'. +# +# Example usage: +# class { 'profiles::base::packages': +# packages => ['package1', 'package2', 'package3'], +# +class profiles::base::packages ( + Array $packages, + Enum[ + 'present', + 'absent', + 'latest', + 'installed' + ] $ensure = 'installed', +){ + ensure_packages($packages, {'ensure' => $ensure}) +}