summaryrefslogtreecommitdiff
path: root/puppet/modules/site_couchdb/manifests/init.pp
blob: 137b661f78c21f9264afe30624930c2696f83cf9 (plain)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
class site_couchdb {
  tag 'leap_service'

  $couchdb_config          = hiera('couch')
  $couchdb_users           = $couchdb_config['users']

  $couchdb_admin           = $couchdb_users['admin']
  $couchdb_admin_user      = $couchdb_admin['username']
  $couchdb_admin_pw        = $couchdb_admin['password']
  $couchdb_admin_salt      = $couchdb_admin['salt']

  $couchdb_leap_mx         = $couchdb_users['leap_mx']
  $couchdb_leap_mx_user    = $couchdb_leap_mx['username']
  $couchdb_leap_mx_pw      = $couchdb_leap_mx['password']
  $couchdb_leap_mx_salt    = $couchdb_leap_mx['salt']

  $couchdb_nickserver      = $couchdb_users['nickserver']
  $couchdb_nickserver_user = $couchdb_nickserver['username']
  $couchdb_nickserver_pw   = $couchdb_nickserver['password']
  $couchdb_nickserver_salt = $couchdb_nickserver['salt']

  $couchdb_soledad         = $couchdb_users['soledad']
  $couchdb_soledad_user    = $couchdb_soledad['username']
  $couchdb_soledad_pw      = $couchdb_soledad['password']
  $couchdb_soledad_salt    = $couchdb_soledad['salt']

  $couchdb_tapicero        = $couchdb_users['tapicero']
  $couchdb_tapicero_user   = $couchdb_tapicero['username']
  $couchdb_tapicero_pw     = $couchdb_tapicero['password']
  $couchdb_tapicero_salt   = $couchdb_tapicero['salt']

  $couchdb_webapp          = $couchdb_users['webapp']
  $couchdb_webapp_user     = $couchdb_webapp['username']
  $couchdb_webapp_pw       = $couchdb_webapp['password']
  $couchdb_webapp_salt     = $couchdb_webapp['salt']

  $couchdb_backup          = $couchdb_config['backup']

  $bigcouch_config         = $couchdb_config['bigcouch']
  $bigcouch_cookie         = $bigcouch_config['cookie']

  $ednp_port               = $bigcouch_config['ednp_port']

  class { 'couchdb':
    bigcouch            => true,
    admin_pw            => $couchdb_admin_pw,
    admin_salt          => $couchdb_admin_salt,
    bigcouch_cookie     => $bigcouch_cookie,
    ednp_port           => $ednp_port,
    chttpd_bind_address => '127.0.0.1'
  }

  # ensure that we don't have leftovers from previous installations
  # where we installed the cloudant bigcouch package
  # https://leap.se/code/issues/4971
  class { 'couchdb::bigcouch::package::cloudant':
    ensure => absent
  }

  Class['site_config::default']
    -> Class['couchdb::bigcouch::package::cloudant']
    -> Service['couchdb']
    -> Class['site_couchdb::stunnel']
    -> File['/root/.netrc']
    -> Class['site_couchdb::bigcouch::add_nodes']
    -> Couchdb::Create_db['users']
    -> Couchdb::Create_db['tokens']
    -> Couchdb::Add_user[$couchdb_webapp_user]
    -> Couchdb::Add_user[$couchdb_soledad_user]

  class { 'site_couchdb::stunnel': }

  class { 'site_couchdb::bigcouch::add_nodes': }

  # /etc/couchdb/couchdb.netrc is deployed by couchdb::query::setup
  # we symlink this to /root/.netrc for couchdb_scripts (eg. backup)
  # and makes life easier for the admin (i.e. using curl/wget without
  # passing credentials)
  file {
    '/root/.netrc':
      ensure  => link,
      target  => '/etc/couchdb/couchdb.netrc';

    '/srv/leap/couchdb':
      ensure => directory
  }

  couchdb::query::setup { 'localhost':
    user  => $couchdb_admin_user,
    pw    => $couchdb_admin_pw,
  }

  include site_couchdb::create_dbs
  include site_couchdb::add_users
  include site_couchdb::designs
  include site_couchdb::logrotate

  include site_shorewall::couchdb
  include site_shorewall::couchdb::bigcouch

  vcsrepo { '/srv/leap/couchdb/scripts':
    ensure   => present,
    provider => git,
    source   => 'https://leap.se/git/couchdb_scripts',
    revision => 'origin/master',
    require  => File['/srv/leap/couchdb']
  }

  if $couchdb_backup { include site_couchdb::backup }
}