Skip to content
This repository was archived by the owner on Aug 28, 2020. It is now read-only.

Commit 716996c

Browse files
committed
Add puppet-serverspec source
Initial release of puppet-serverspec module. This is for demonstration purposes only. Do NOT use in production environments.
1 parent 678255e commit 716996c

10 files changed

+279
-2
lines changed

README.md

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
puppet-serverspec
2-
=================
2+
================
33

4-
Puppet module for serverspec
4+
# Description
5+
Puppet module for [serverspec](http://serverspec.org/). I wrote this for a demonstration of Sensu and serverspec.
6+
7+
Please do not use this in an production environment.

files/apache2_spec.rb

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
require 'spec_helper'
2+
3+
## Packages
4+
5+
describe package 'apache2' do
6+
# Package ntp should be installed.
7+
it { should be_installed }
8+
end
9+
10+
## Services
11+
12+
describe service 'apache2' do
13+
# Service ssh should be enabled.
14+
it { should be_enabled }
15+
end
16+
17+
describe service 'apache2' do
18+
# Service ssh should be running.
19+
it { should be_running }
20+
end
21+
22+
describe port(80) do
23+
# Service should be listening
24+
it { should be_listening }
25+
end
26+
27+
## Files and directories
28+
29+
describe file '/etc/apache2/httpd.conf' do
30+
31+
# File should be owned by user and group root with mode 644
32+
it { should be_mode 644 }
33+
it { should be_owned_by 'root' }
34+
it { should be_grouped_into 'root' }
35+
end
36+

files/base_spec.rb

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
require 'spec_helper'
2+
3+
## Packages
4+
5+
describe package 'sysstat' do
6+
# Package should be installed.
7+
it { should be_installed }
8+
end
9+
10+
describe package 'atop' do
11+
# Package should be installed.
12+
it { should be_installed }
13+
end
14+
15+
describe package 'curl' do
16+
# Package should be installed.
17+
it { should be_installed }
18+
end
19+
20+
describe package 'htop' do
21+
# Package should be installed.
22+
it { should be_installed }
23+
end
24+
25+
describe package 'multitail' do
26+
# Package should be installed.
27+
it { should be_installed }
28+
end
29+
describe package 'ngrep' do
30+
# Package should be installed.
31+
it { should be_installed }
32+
end
33+
34+
describe package 'vim' do
35+
# Package should be installed.
36+
it { should be_installed }
37+
end
38+
39+
describe package 'swaks' do
40+
# Package should be installed.
41+
it { should be_installed }
42+
end
43+
44+
describe package 'tcpdump' do
45+
# Package should be installed.
46+
it { should be_installed }
47+
end
48+
49+
## Files and directories
50+
51+
describe command('cat /etc/resolv.conf') do
52+
it { should return_stdout /8\.8\.8\.8/ }
53+
end

files/somesite.vagrant.local_spec.rb

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require 'spec_helper'
2+
3+
## Files and directories
4+
5+
describe file('/etc/apache2/sites-available/10-somesite.vagrant.local.conf') do
6+
# File should be owned by user and group root with mode 644
7+
it { should be_mode 644 }
8+
it { should be_owned_by 'root' }
9+
it { should be_grouped_into 'root' }
10+
end
11+
12+
describe file('/etc/apache2/sites-enabled/10-somesite.vagrant.local.conf') do
13+
# Site should be enabled
14+
it { should be_linked_to '/etc/apache2/sites-available/10-somesite.vagrant.local.conf' }
15+
end

files/spec_helper.rb

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
require 'serverspec'
2+
3+
include SpecInfra::Helper::Exec
4+
include SpecInfra::Helper::DetectOS
5+
6+
RSpec.configure do |c|
7+
if ENV['ASK_SUDO_PASSWORD']
8+
require 'highline/import'
9+
c.sudo_password = ask("Enter sudo password: ") { |q| q.echo = false }
10+
else
11+
c.sudo_password = ENV['SUDO_PASSWORD']
12+
end
13+
end

manifests/helper.pp

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Class serverspec::helper
2+
#
3+
# This class handles the spec_helper file
4+
#
5+
# Author
6+
# Adrian van Dongen [email protected]
7+
#
8+
# Version
9+
# 0.1 Initial release
10+
#
11+
# Parameters:
12+
#
13+
# Requires:
14+
# serverspec::params
15+
#
16+
class serverspec::helper {
17+
18+
# Load default parameters
19+
include serverspec::params
20+
21+
# Place spec_helper
22+
file{ 'spec_helper.rb':
23+
ensure => file,
24+
path => "${serverspec::params::spec_path}/spec_helper.rb",
25+
owner => $serverspec::params::owner,
26+
group => $serverspec::params::group,
27+
mode => $serverspec::params::mode ,
28+
source => 'puppet:///modules/serverspec/spec_helper.rb',
29+
}
30+
31+
}

manifests/init.pp

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Module serverspec
2+
#
3+
# This module installs, configures and manages serverspec
4+
#
5+
# Author
6+
# Adrian van Dongen [email protected]
7+
#
8+
# Version
9+
# 0.1 Initial release
10+
#
11+
# Parameters:
12+
# None
13+
#
14+
# Requires:
15+
# None
16+
#
17+
# Sample Usage:
18+
#
19+
# # serverspec
20+
# class {'serverspec': }
21+
#
22+
class serverspec{
23+
24+
include serverspec::package
25+
include serverspec::helper
26+
27+
Class['serverspec::package'] -> Class['serverspec::helper']
28+
}

manifests/package.pp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Class serverspec::package
2+
#
3+
# This class handles the installation of serverspec
4+
#
5+
# Author
6+
# Adrian van Dongen [email protected]
7+
#
8+
# Version
9+
# 0.1 Initial release
10+
#
11+
# Parameters:
12+
# None
13+
#
14+
# Requires:
15+
# serverspec::params
16+
#
17+
class serverspec::package {
18+
19+
# Load default parameters
20+
include serverspec::params
21+
22+
# Install serverspec gem
23+
package { $serverspec::params::pkg:
24+
ensure => 'installed',
25+
provider => $serverspec::params::provider,
26+
}
27+
28+
# Create serverspec and spec directory
29+
file{ [ $serverspec::params::config_path, $serverspec::params::spec_path,]:
30+
ensure => directory,
31+
owner => $serverspec::params::owner,
32+
group => $serverspec::params::group,
33+
mode => $serverspec::params::mode,
34+
}
35+
36+
}

manifests/params.pp

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Class serverspec::params
2+
#
3+
# This class stores the default configuration of serverspec module
4+
#
5+
# Author
6+
# Adrian van Dongen [email protected]
7+
#
8+
# Version
9+
# 0.1 Initial release
10+
#
11+
# Parameters:
12+
# None
13+
#
14+
# Requires:
15+
# None
16+
#
17+
class serverspec::params {
18+
19+
$pkg = 'serverspec'
20+
$provider = 'gem'
21+
$config_path = '/etc/serverspec'
22+
$spec_path = '/etc/serverspec/spec'
23+
$owner = 'root'
24+
$group = 'root'
25+
$mode = '0755'
26+
27+
}

manifests/spec.pp

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Define serverspec::spec
2+
#
3+
# This define handles the configuration of spec tests
4+
#
5+
# Author
6+
# Adrian van Dongen [email protected]
7+
#
8+
# Version
9+
# 0.1 Initial release
10+
#
11+
# Parameters:
12+
#
13+
# Requires:
14+
# serverspec::params
15+
#
16+
# Sample Usage:
17+
#
18+
# serverspec::spec {'base_spec.rb':}
19+
#
20+
define serverspec::spec {
21+
22+
# Load default parameters
23+
include serverspec::params
24+
25+
# Place the spec file
26+
file{$name:
27+
ensure => file,
28+
path => "${serverspec::params::spec_path}/${name}",
29+
owner => $serverspec::params::owner,
30+
group => $serverspec::params::group,
31+
mode => $serverspec::params::mode,
32+
source => "puppet:///modules/serverspec/${name}"
33+
}
34+
35+
}

0 commit comments

Comments
 (0)