1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
class couchdb::base {
if $::couchdb::bigcouch == true {
$couchdb_user = 'bigcouch'
include couchdb::bigcouch
} else {
$couchdb_user = 'couchdb'
}
package {'couchdb':
ensure => present,
require => Exec['refresh_apt']
}
service {'couchdb':
ensure => running,
hasstatus => true,
enable => true,
require => Package['couchdb']
}
# todo: make host/port configurable
exec {'wait_for_couchdb':
command => 'wget --retry-connrefused --tries 10 --quiet "http://127.0.0.1:5984" -O /dev/null',
require => Service['couchdb']
}
# required for couch-doc-update script
package { 'couchrest':
ensure => installed,
provider => 'gem'
}
File['/usr/local/bin/couch-doc-update'] -> Couchdb::Update <| |>
file {
'/usr/local/bin/couch-doc-update':
source => 'puppet:///modules/couchdb/couch-doc-update',
mode => '0755',
owner => 'root',
group => 'root',
require => Package['couchrest'];
'/etc/couchdb/local.ini':
source => [ "puppet:///modules/site_couchdb/${::fqdn}/local.ini",
'puppet:///modules/site_couchdb/local.ini',
'puppet:///modules/couchdb/local.ini' ],
notify => Service[couchdb],
owner => $couchdb_user,
group => $couchdb_user,
mode => '0660',
require => Package['couchdb'];
'/etc/couchdb/local.d':
ensure => directory,
require => Package['couchdb'];
}
# salt and encrypt admin pw
$sha1_and_salt = str2sha1_and_salt($::couchdb::admin_pw)
$sha1 = $sha1_and_salt[0]
$salt = $sha1_and_salt[1]
file {'/etc/couchdb/local.d/admin.ini':
content => "[admins]
admin = -hashed-${sha1},${salt}
",
mode => '0600',
owner => $couchdb_user,
group => $couchdb_user,
notify => Service[couchdb],
require => File ['/etc/couchdb/local.d'];
}
exec { 'couchdb_restart':
command => $::couchdb::bigcouch ? {
true => '/etc/init.d/bigcouch restart; sleep 6',
default => '/etc/init.d/couchdb restart; sleep 6',
},
path => ['/bin', '/usr/bin',],
subscribe => File['/etc/couchdb/local.d/admin.ini',
'/etc/couchdb/local.ini'],
refreshonly => true
}
}
|