Skip to content

Commit f9731e8

Browse files
committed
Update to puppet best practice package installation
1 parent df3cb14 commit f9731e8

File tree

7 files changed

+75
-24
lines changed

7 files changed

+75
-24
lines changed

data/os/Debian.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
3+
csf::packages::required:
4+
- perl
5+
- iptables
6+
7+
csf::packages::recommended:
8+
- libwww-perl
9+
- liblwp-protocol-https-perl
10+
- libgd-graph-perl

data/os/RedHat.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
3+
csf::packages::required:
4+
- perl
5+
- iptables
6+
7+
csf::packages::recommended:
8+
- perl-libwww-perl
9+
- perl-LWP-Protocol-https
10+
- perl-GDGraph

hiera.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
version: 5
3+
4+
defaults: # Used for any hierarchy level that omits these keys.
5+
datadir: data # This path is relative to hiera.yaml's directory.
6+
data_hash: yaml_data # Use the built-in YAML backend.
7+
8+
hierarchy:
9+
- name: "osfamily/major release"
10+
paths:
11+
# Used to distinguish between Debian and Ubuntu
12+
- "os/%{facts.os.name}/%{facts.os.release.major}.yaml"
13+
- "os/%{facts.os.family}/%{facts.os.release.major}.yaml"
14+
# Used for Solaris
15+
- "os/%{facts.os.family}/%{facts.kernelrelease}.yaml"
16+
- name: "osfamily"
17+
paths:
18+
- "os/%{facts.os.name}.yaml"
19+
- "os/%{facts.os.family}.yaml"
20+
- name: 'common'
21+
path: 'common.yaml'

manifests/init.pp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# csf
22
class csf (
3-
$download_location = $::csf::params::download_location,
4-
$service_ensure = $::csf::params::service_ensure,
5-
$service_enable = $::csf::params::service_enable,
6-
$docker = $::csf::params::docker,
3+
$download_location = $::csf::params::download_location,
4+
$service_ensure = $::csf::params::service_ensure,
5+
$service_enable = $::csf::params::service_enable,
6+
$docker = $::csf::params::docker,
7+
$install_recommended_packages = $::csf::params::install_recommended_packages,
78
) inherits csf::params {
89
# Install and configure CSF as required
910
include ::csf::install

manifests/install.pp

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
# csf::install
22
class csf::install inherits csf {
33
# this installs csf and reloads it
4-
if $::operatingsystem == 'CentOS' and versioncmp($::operatingsystemmajrelease, '7') < 0 {
5-
package { 'iptables-ipv6':
6-
ensure => installed,
7-
before => Exec['csf-install'],
8-
}
9-
}
104

11-
package { 'iptables':
12-
ensure => installed,
5+
$required_packages = lookup('csf::packages::required', Array[String])
6+
7+
ensure_packages ($required_packages, {
8+
ensure => 'present',
139
before => Exec['csf-install'],
14-
}
10+
})
1511

16-
package { 'csf-perl':
17-
ensure => installed,
18-
name => 'perl',
12+
if $::csf::install_recommended_packages {
13+
$recommended_packages = lookup('csf::packages::recommended', Array[String])
14+
15+
ensure_packages ($recommended_packages, {
16+
ensure => 'present',
17+
before => Exec['csf-install'],
18+
})
1919
}
20-
-> exec { 'csf-install':
20+
21+
exec { 'csf-install':
2122
cwd => '/tmp',
2223
command => "/usr/bin/curl -o csf.tgz ${::csf::download_location} && tar -xzf csf.tgz && cd csf && sh install.sh",
2324
creates => '/usr/sbin/csf',
2425
notify => Service['csf'],
25-
require => Package['csf-perl'],
26+
require => Package['perl'],
2627
}
2728

2829
# make sure testing is disabled, we trust puppet enough

manifests/params.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
$docker = absent
55
$service_ensure = 'running'
66
$service_enable = true
7+
$install_recommended_packages = true
78
}

spec/classes/csf_install_spec.rb

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,25 @@
1616
it { is_expected.to contain_class('csf::install') }
1717

1818
# verify packages and installation
19-
it { is_expected.to contain_package('csf-perl') }
19+
it { is_expected.to contain_package('perl') }
2020
it { is_expected.to contain_exec('csf-install').with('cwd' => '/tmp') }
2121
it { is_expected.to contain_exec('csf-install').with('command' => '/usr/bin/curl -o csf.tgz https://download.configserver.com/csf.tgz && tar -xzf csf.tgz && cd csf && sh install.sh') }
2222
it { is_expected.to contain_exec('csf-install').with('creates' => '/usr/sbin/csf') }
2323
it { is_expected.to contain_exec('csf-install').with('notify' => 'Service[csf]') }
24-
it { is_expected.to contain_exec('csf-install').with('require' => 'Package[csf-perl]') }
24+
it { is_expected.to contain_exec('csf-install').with('require' => 'Package[perl]') }
2525

26-
it { is_expected.to contain_package('iptables').with('ensure' => 'installed') }
26+
it { is_expected.to contain_package('iptables').with('ensure' => 'present') }
2727

28-
if facts[:operatingsystem] == 'CentOS' && facts[:operatingsystemmajrelease].to_i < 7
29-
it { is_expected.to contain_package('iptables-ipv6').with('ensure' => 'installed') }
30-
it { is_expected.to contain_package('iptables-ipv6').with('before' => 'Exec[csf-install]') }
28+
if facts[:operatingsystem] == 'CentOS'
29+
it { is_expected.to contain_package('perl-libwww-perl').with('ensure' => 'present') }
30+
it { is_expected.to contain_package('perl-LWP-Protocol-https').with('ensure' => 'present') }
31+
it { is_expected.to contain_package('perl-GDGraph').with('ensure' => 'present') }
32+
end
33+
34+
if facts[:operatingsystem] == 'Ubuntu'
35+
it { is_expected.to contain_package('libwww-perl').with('ensure' => 'present') }
36+
it { is_expected.to contain_package('liblwp-protocol-https-perl').with('ensure' => 'present') }
37+
it { is_expected.to contain_package('libgd-graph-perl').with('ensure' => 'present') }
3138
end
3239

3340
# check our configuration

0 commit comments

Comments
 (0)