diff options
| author | elijah <elijah@riseup.net> | 2014-06-20 02:00:18 -0700 | 
|---|---|---|
| committer | elijah <elijah@riseup.net> | 2014-06-20 02:00:18 -0700 | 
| commit | 2f7ee09eb9f184349057802e0d6c0102200d2419 (patch) | |
| tree | d2e24cffd03b6b9786b3bafae8a2ff9d551c4584 /puppet/modules | |
| parent | 7dc648d43d255999c1ce347a73787bd0c0a3f910 (diff) | |
site_couchdb: support auto-stunnel setup, split master, bigcouch, and mirror out into separate files.
Diffstat (limited to 'puppet/modules')
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/add_users.pp | 3 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/bigcouch.pp | 20 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/create_dbs.pp | 3 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/init.pp | 60 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/master.pp | 9 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/mirror.pp | 15 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/setup.pp | 39 | 
7 files changed, 93 insertions, 56 deletions
| diff --git a/puppet/modules/site_couchdb/manifests/add_users.pp b/puppet/modules/site_couchdb/manifests/add_users.pp index f9ea7349..41930b7b 100644 --- a/puppet/modules/site_couchdb/manifests/add_users.pp +++ b/puppet/modules/site_couchdb/manifests/add_users.pp @@ -1,5 +1,8 @@  class site_couchdb::add_users { +  Class['site_couchdb::create_dbs'] +    -> Class['site_couchdb::add_users'] +    # Couchdb users    ## leap_mx couchdb user diff --git a/puppet/modules/site_couchdb/manifests/bigcouch.pp b/puppet/modules/site_couchdb/manifests/bigcouch.pp index 97c8cd12..f0aab734 100644 --- a/puppet/modules/site_couchdb/manifests/bigcouch.pp +++ b/puppet/modules/site_couchdb/manifests/bigcouch.pp @@ -1,18 +1,32 @@  class site_couchdb::bigcouch { -  $config         = $::site_couchdb::couchdb_config['bigcouch'] +  $config         = $couchdb_config['bigcouch']    $cookie         = $config['cookie'] +  $ednp_port      = $config['ednp_port'] -  $ednp_port               = $config['ednp_port'] +  class { 'couchdb': +    admin_pw            => $couchdb_admin_pw, +    admin_salt          => $couchdb_admin_salt, +    bigcouch            => true, +    bigcouch_cookie     => $cookie, +    ednp_port           => $ednp_port, +    chttpd_bind_address => '127.0.0.1' +  } +  # +  # stunnel must running correctly before bigcouch dbs can be set up. +  #    Class['site_config::default'] +    -> Class['couchdb::bigcouch::package::cloudant'] +    -> Service['shorewall'] +    -> Service['stunnel'] +    -> Class['site_couchdb::setup']      -> Class['site_couchdb::bigcouch::add_nodes']      -> Class['site_couchdb::bigcouch::settle_cluster']    include site_couchdb::bigcouch::add_nodes    include site_couchdb::bigcouch::settle_cluster    include site_couchdb::bigcouch::compaction -  include site_shorewall::couchdb::bigcouch    file { '/var/log/bigcouch':      ensure => directory diff --git a/puppet/modules/site_couchdb/manifests/create_dbs.pp b/puppet/modules/site_couchdb/manifests/create_dbs.pp index 41500d3a..f8d8098a 100644 --- a/puppet/modules/site_couchdb/manifests/create_dbs.pp +++ b/puppet/modules/site_couchdb/manifests/create_dbs.pp @@ -1,5 +1,8 @@  class site_couchdb::create_dbs { +  Class['site_couchdb::setup'] +    -> Class['site_couchdb::create_dbs'] +    # Couchdb databases    ### customer database diff --git a/puppet/modules/site_couchdb/manifests/init.pp b/puppet/modules/site_couchdb/manifests/init.pp index 0b923c9f..4999b611 100644 --- a/puppet/modules/site_couchdb/manifests/init.pp +++ b/puppet/modules/site_couchdb/manifests/init.pp @@ -37,70 +37,26 @@ class site_couchdb {    $couchdb_backup          = $couchdb_config['backup']    $couchdb_mode            = $couchdb_config['mode'] -  class { 'couchdb': -    bigcouch            => $couchdb_bigcouch, -    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 -  } +  if $couchdb_mode == "multimaster" { include site_couchdb::bigcouch } +  if $couchdb_mode == "master"      { include site_couchdb::master } +  if $couchdb_mode == "mirror"      { include site_couchdb::mirror }    Class['site_config::default'] -    -> Class['couchdb::bigcouch::package::cloudant']      -> Service['shorewall'] -    -> Class['site_couchdb::stunnel'] -    -> Service['couchdb'] -    -> File['/root/.netrc'] -    -> Class['site_couchdb::create_dbs'] -    -> Class['site_couchdb::add_users'] - -  # /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 -  } +    -> Service['stunnel'] +    -> Class['couchdb'] +    -> Class['site_couchdb::setup'] -  couchdb::query::setup { 'localhost': -    user  => $couchdb_admin_user, -    pw    => $couchdb_admin_pw, -  } +  include site_stunnel -  vcsrepo { '/srv/leap/couchdb/scripts': -    ensure   => present, -    provider => git, -    source   => 'https://leap.se/git/couchdb_scripts', -    revision => 'origin/master', -    require  => File['/srv/leap/couchdb'] -  } - -  include site_couchdb::stunnel +  include site_couchdb::setup    include site_couchdb::create_dbs    include site_couchdb::add_users    include site_couchdb::designs    include site_couchdb::logrotate -  if $couchdb_mode == "multimaster" { include site_couchdb::bigcouch } -  if $couchdb_mode == "mirror"      { include site_couchdb::mirror } -    if $couchdb_backup   { include site_couchdb::backup } -  include site_shorewall::couchdb -    include site_check_mk::agent::couchdb    include site_check_mk::agent::tapicero diff --git a/puppet/modules/site_couchdb/manifests/master.pp b/puppet/modules/site_couchdb/manifests/master.pp new file mode 100644 index 00000000..a0a6633d --- /dev/null +++ b/puppet/modules/site_couchdb/manifests/master.pp @@ -0,0 +1,9 @@ +class site_couchdb::master { + +  class { 'couchdb': +    admin_pw            => $site_couchdb::couchdb_admin_pw, +    admin_salt          => $site_couchdb::couchdb_admin_salt, +    chttpd_bind_address => '127.0.0.1' +  } + +}
\ No newline at end of file diff --git a/puppet/modules/site_couchdb/manifests/mirror.pp b/puppet/modules/site_couchdb/manifests/mirror.pp index 708171e4..a6222f6a 100644 --- a/puppet/modules/site_couchdb/manifests/mirror.pp +++ b/puppet/modules/site_couchdb/manifests/mirror.pp @@ -1,8 +1,21 @@  class site_couchdb::mirror { +  class { 'couchdb': +    admin_pw            => $site_couchdb::couchdb_admin_pw, +    admin_salt          => $site_couchdb::couchdb_admin_salt, +    chttpd_bind_address => '127.0.0.1' +  } +    # Couchdb databases -  $from = $site_couchdb::couchdb_config['replication']['masters'][0] +  $masters = $site_couchdb::couchdb_config['replication']['masters'] +  $master_node_names = keys($site_couchdb::couchdb_config['replication']['masters']) +  $master_node = $masters[$master_node_names[0]] +  $from_host = $master_node['domain_internal'] +  $from_port = $master_node['couch_port'] +  $from = "${from_host}:${from_port}" + +  notice("mirror from: ${from}")    ### customer database    couchdb::mirror_db { 'customers': diff --git a/puppet/modules/site_couchdb/manifests/setup.pp b/puppet/modules/site_couchdb/manifests/setup.pp new file mode 100644 index 00000000..e398356b --- /dev/null +++ b/puppet/modules/site_couchdb/manifests/setup.pp @@ -0,0 +1,39 @@ +# +# An initial setup class. All the other classes depend on this +# +class site_couchdb::setup { + +  # 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 +  } + +  # /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  => $site_couchdb::couchdb_admin_user, +    pw    => $site_couchdb::couchdb_admin_pw, +  } + +  vcsrepo { '/srv/leap/couchdb/scripts': +    ensure   => present, +    provider => git, +    source   => 'https://leap.se/git/couchdb_scripts', +    revision => 'origin/master', +    require  => File['/srv/leap/couchdb'] +  } + +} | 
