Skip to content

Commit 02d32f4

Browse files
committed
server: support arbiter node config introduced by PR#182
1 parent 2aef855 commit 02d32f4

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

README.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -418,14 +418,19 @@ set name as an argument to this set. All hosts must have the same set name.
418418
An array of member hosts for the replica set.
419419
Mutually exclusive with `replset_config` param.
420420

421+
##### `replset_arbiter`
422+
A string to identify an arbiter instance for the replica set.
423+
The arbiter node must also appear in `replset_members`.
424+
Mutually exclusive with `replset_config` param.
425+
421426
##### `replset_config`
422427
A hash that is used to configure the replica set.
423428
Mutually exclusive with `replset_members` param.
424429

425430
```puppet
426431
class mongodb::server {
427432
replset => 'rsmain',
428-
replset_config => { 'rsmain' => { ensure => present, settings => { heartbeatTimeoutSecs => 15, getLastErrorModes => { ttmode => { dc => 1 } } }, members => [{'host'=>'host1:27017', 'tags':{ 'dc' : 'east'}}, { 'host' => 'host2:27017'}, 'host3:27017'] } }
433+
replset_config => { 'rsmain' => { ensure => present, settings => { heartbeatTimeoutSecs => 15, getLastErrorModes => { ttmode => { dc => 1 } } }, members => [{'host'=>'host1:27017', 'tags':{ 'dc' : 'east'}}, { 'host' => 'host2:27017'}, 'host3:27017'] }, arbiter => ['host3:27017'] }
429434
430435
}
431436
```

manifests/server.pp

+4-2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
Optional[String] $replset = undef,
5454
Optional[Hash] $replset_config = undef,
5555
Optional[Array] $replset_members = undef,
56+
Optional[String] $replset_arbiter = undef,
5657
Optional[Boolean] $configsvr = undef,
5758
Optional[Boolean] $shardsvr = undef,
5859
Optional[Boolean] $rest = undef,
@@ -113,8 +114,8 @@
113114
# Set-up replicasets
114115
if $replset {
115116
# Check that we've got either a members array or a replset_config hash
116-
if $replset_members and $replset_config {
117-
fail('You can provide either replset_members or replset_config, not both.')
117+
if ( $replset_members or $replset_arbiter ) and $replset_config {
118+
fail('You can provide either replset_members incl. replset_arbiter or replset_config, not both.')
118119
} elsif !$replset_members and !$replset_config {
119120
# No members or config provided. Warn about it.
120121
warning('Replset specified, but no replset_members or replset_config provided.')
@@ -129,6 +130,7 @@
129130
"${replset}" => {
130131
'ensure' => 'present',
131132
'members' => $replset_members,
133+
'arbiter' => $replset_arbiter,
132134
},
133135
}
134136
}

spec/classes/server_spec.rb

+30
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,36 @@
381381

382382
it { is_expected.to contain_class('mongodb::replset').with_sets(rsConf) }
383383
end
384+
385+
describe 'should setup using replset_members with replset_arbiter' do
386+
let(:rsConf) do
387+
{
388+
'rsTest' => {
389+
'ensure' => 'present',
390+
'members' => [
391+
'mongo1:27017',
392+
'mongo2:27017',
393+
'mongo3:27017'
394+
],
395+
'arbiter' => 'mongo3:27017'
396+
}
397+
}
398+
end
399+
400+
let(:params) do
401+
{
402+
replset: 'rsTest',
403+
replset_members: [
404+
'mongo1:27017',
405+
'mongo2:27017',
406+
'mongo3:27017'
407+
],
408+
'arbiter' => 'mongo3:27017'
409+
}
410+
end
411+
412+
it { is_expected.to contain_class('mongodb::replset').with_sets(rsConf) }
413+
end
384414
end
385415
end
386416
end

0 commit comments

Comments
 (0)