Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .fixtures.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
fixtures:
repositories:
'stdlib': 'git://github.com/puppetlabs/puppetlabs-stdlib.git'
'concat': 'git://github.com/puppetlabs/puppetlabs-concat.git'
's3file': 'git://github.com/branan/puppet-module-s3file.git'
'java' : 'git://github.com/puppetlabs/puppetlabs-java.git'
symlinks:
'minecraft': "#{source_dir}"
5 changes: 3 additions & 2 deletions Modulefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ summary 'Minecraft Server'
description 'Install and manage a Minecraft server'
project_page 'https://github.com/branan/puppet-module-minecraft'

dependency 'branan/s3file', '>= 1.0.0'
dependency 'puppetlabs/stdlib', '>= 2.2.0'
dependency 'puppetlabs/java', '>= 0.1.6'
dependency 'puppetlabs/concat', '>= 1.0.0'
dependency 'puppetlabs/java', '>= 0.1.6'
dependency 'branan/s3file', '>= 1.0.0'
1 change: 1 addition & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require 'puppetlabs_spec_helper/rake_tasks'
22 changes: 14 additions & 8 deletions manifests/ban.pp
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
# Definition: minecraft::ban
#
# This definition adds a player to the Minecraft server's ban list
# This definition adds an ip address to the Minecraft server's banned ip list
#
define minecraft::ban ()
{
file_line { $name:
path =>"${minecraft::homedir}/banned-players.txt",
line => $name,
notify => Service['minecraft'],
define minecraft::ban(
$file = 'banned-players.txt',
$ensure = 'present'
){

include ::minecraft

concat::fragment{"ban_fragment_${name}":
ensure => $ensure,
target => "${::minecraft::homedir}/${file}",
content => $name,
notify => Service['minecraft']
}
}
}
78 changes: 48 additions & 30 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,23 @@
$user = 'mcserver',
$group = 'mcserver',
$homedir = '/opt/minecraft',
$mode = '0644',
$manage_java = true,
$manage_screen = true,
$manage_curl = true,
$heap_size = 2048,
$heap_start = 512,
)
{
$heap_start = 512
){

validate_string($user)
validate_string($group)
validate_string($homedir)
validate_bool($manage_java)
validate_bool($manage_screen)
validate_bool($manage_curl)
validate_string($heap_size)
validate_string($heap_size)

if $manage_java {
class { 'java':
distribution => 'jre',
Expand All @@ -49,7 +59,7 @@
before => S3file["${homedir}/minecraft_server.jar"],
}
}

group { $group:
ensure => present,
}
Expand All @@ -65,33 +75,41 @@
require => User[$user],
}

file { "${homedir}/ops.txt":
ensure => present,
owner => $user,
group => $group,
mode => '0664',
} -> Minecraft::Op<| |>

file { "${homedir}/banned-players.txt":
ensure => present,
owner => $user,
group => $group,
mode => '0664',
} -> Minecraft::Ban<| |>
concat{"${homedir}/banned-players.txt":
owner => $owner,
group => $group,
mode => $mode,
ensure_newline => true
}

file { "${homedir}/banned-ips.txt":
ensure => present,
owner => $user,
group => $group,
mode => '0664',
} -> Minecraft::Ipban<| |>
concat{"${homedir}/banned-ips.txt":
owner => $owner,
group => $group,
mode => $mode,
ensure_newline => true
}

concat{"${homedir}/ops.txt":
owner => $owner,
group => $group,
mode => $mode,
ensure_newline => true
}

concat{"${homedir}/white-list.txt":
owner => $owner,
group => $group,
mode => $mode,
ensure_newline => true,
}


file { "${homedir}/white-list.txt":
ensure => present,
owner => $user,
group => $group,
mode => '0664',
} -> Minecraft::Whitelist<| |>
concat{"${homedir}/server.properties":
owner => $owner,
group => $group,
mode => $mode,
ensure_newline => true
}

file { '/etc/init.d/minecraft':
ensure => present,
Expand All @@ -106,4 +124,4 @@
require => File['/etc/init.d/minecraft'],
subscribe => S3file["${homedir}/minecraft_server.jar"],
}
}
}
20 changes: 13 additions & 7 deletions manifests/ipban.pp
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@
#
# This definition adds an ip address to the Minecraft server's banned ip list
#
define minecraft::ipban ()
{
file_line { $name:
path =>"${minecraft::homedir}/banned-ips.txt",
line => $name,
notify => Service['minecraft'],
define minecraft::ipban(
$file = 'banned-ips.txt',
$ensure = 'present'
){

include ::minecraft

concat::fragment{"ipban_fragment_${name}":
ensure => $ensure,
target => "${::minecraft::homedir}/${file}",
content => $name,
notify => Service['minecraft']
}
}
}
20 changes: 13 additions & 7 deletions manifests/op.pp
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@
#
# This definition adds a player to the Minecraft server's auto-op list
#
define minecraft::op ()
{
file_line { $name:
path =>"${minecraft::homedir}/ops.txt",
line => $name,
notify => Service['minecraft'],
define minecraft::op(
$file = 'ops.txt',
$ensure = 'present'
){

include ::minecraft

concat::fragment{"op_fragment_${name}":
ensure => $ensure,
target => "${::minecraft::homedir}/${file}",
content => $name,
notify => Service['minecraft']
}
}
}
20 changes: 12 additions & 8 deletions manifests/server_prop.pp
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,18 @@
# value => 'true'
# }
#
define minecraft::server_prop (
define minecraft::server_prop(
$file = 'server.properties',
$ensure = 'present',
$value,
)
{
file_line { $name:
path => "${minecraft::homedir}/server.properties",
line => "${name}=${value}",
match => "${name}=.*",
notify => Service['minecraft'],
){

include ::minecraft

concat::fragment{"server_prop_fragment_${name}":
ensure => $ensure,
target => "${::minecraft::homedir}/${file}",
content => "${name}=${value}",
notify => Service['minecraft']
}
}
18 changes: 12 additions & 6 deletions manifests/whitelist.pp
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@
#
# This definition adds a player to the Minecraft server's whitelist
#
define minecraft::whitelist ()
{
file_line { $name:
path =>"${minecraft::homedir}/white-list.txt",
line => $name,
notify => Service['minecraft'],
define minecraft::whitelist(
$file = 'white-list.txt',
$ensure = 'present'
){

include ::minecraft

concat::fragment{"whitelist_fragment_${name}":
ensure => $ensure,
target => "${::minecraft::homedir}/${file}",
content => $name,
notify => Service['minecraft']
}
}
55 changes: 55 additions & 0 deletions spec/classes/minecraft_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
require 'spec_helper'

describe 'minecraft', :type => :class do
let(:facts) do {
:osfamily => 'Debian',
:lsbdistcodename => 'raring',
:concat_basedir => '/dne'
} end
let(:default_params) do {
:user => 'foo',
:group => 'bar',
:homedir => '/baz/qux',
:manage_java => true,
:manage_screen => true,
:manage_curl => true,
:heap_size => '2048',
:heap_start => '512'
} end
context 'by default' do
let(:params) do default_params end
it { should include_class('minecraft') }
it { should contain_class('java').with({
:distribution => 'jre',
:before => 'Service[minecraft]'
}) }
it { should contain_package('screen').with({
:before => 'Service[minecraft]'
}) }
it { should contain_package('curl').with({
:before => 'S3file[/baz/qux/minecraft_server.jar]'
}) }
it { should contain_user('foo').with({
:gid => 'bar',
:home => '/baz/qux',
:managehome => true,
}) }
it { should contain_group('bar').with({
:ensure => 'present'
}) }
it { should contain_s3file('/baz/qux/minecraft_server.jar').with({
:source => 'MinecraftDownload/launcher/minecraft_server.jar',
:require => 'User[foo]'
}) }
['/baz/qux/banned-players.txt','/baz/qux/banned-ips.txt',
'/baz/qux/white-list.txt','/baz/qux/ops.txt'].each do |file|
it { should contain_file(file) }
end
it { should contain_file('/etc/init.d/minecraft').with({
:ensure => 'present',
:owner => 'root',
:group => 'root',
:mode => '0744'
}).with_content(/MAX_HEAP="2048"\nMIN_HEAP="512"/) }
end
end
34 changes: 34 additions & 0 deletions spec/defines/minecraft_ban_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require 'spec_helper'

describe 'minecraft::ban', :type => :define do
let(:title) { 'fooplayer' }
let(:facts) do {
:concat_basedir => '/dne',
:osfamily => 'Debian',
:lsbdistcodename => 'raring'
} end
let(:default_params) do {
:file => 'banned-players.txt',
:ensure => 'present'
} end
context 'with ensure set to present' do
let(:params) do default_params end
it { should contain_minecraft__ban('fooplayer') }
it { should contain_concat__fragment('ban_fragment_fooplayer').with({
:ensure => 'present',
:target => '/opt/minecraft/banned-players.txt',
:content => 'fooplayer',
:notify => 'Service[minecraft]'
}) }
end
context 'with ensure set to absent' do
let(:params) do default_params.merge!({ :ensure => 'absent'}) end
it { should contain_minecraft__ban('fooplayer') }
it { should contain_concat__fragment('ban_fragment_fooplayer').with({
:ensure => 'absent',
:target => '/opt/minecraft/banned-players.txt',
:content => 'fooplayer',
:notify => 'Service[minecraft]'
}) }
end
end
34 changes: 34 additions & 0 deletions spec/defines/minecraft_ipban_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require 'spec_helper'

describe 'minecraft::ipban', :type => :define do
let(:title) { 'fooplayer' }
let(:facts) do {
:concat_basedir => '/dne',
:osfamily => 'Debian',
:lsbdistcodename => 'raring'
} end
let(:default_params) do {
:file => 'banned-ips.txt',
:ensure => 'present'
} end
context 'with ensure set to present' do
let(:params) do default_params end
it { should contain_minecraft__ipban('fooplayer') }
it { should contain_concat__fragment('ipban_fragment_fooplayer').with({
:ensure => 'present',
:target => '/opt/minecraft/banned-ips.txt',
:content => 'fooplayer',
:notify => 'Service[minecraft]'
}) }
end
context 'with ensure set to absent' do
let(:params) do default_params.merge!({ :ensure => 'absent'}) end
it { should contain_minecraft__ipban('fooplayer') }
it { should contain_concat__fragment('ipban_fragment_fooplayer').with({
:ensure => 'absent',
:target => '/opt/minecraft/banned-ips.txt',
:content => 'fooplayer',
:notify => 'Service[minecraft]'
}) }
end
end
Loading