Puppet Class: profile::openstack::base::designate::service

Defined in:
modules/profile/manifests/openstack/base/designate/service.pp

Overview

SPDX-License-Identifier: Apache-2.0

Parameters:

  • version (Any) (defaults to: lookup('profile::openstack::base::version'))
  • designate_hosts (Array[Stdlib::Fqdn]) (defaults to: lookup('profile::openstack::base::designate_hosts'))
  • openstack_control_nodes (Array[OpenStack::ControlNode]) (defaults to: lookup('profile::openstack::base::openstack_control_nodes'))
  • keystone_fqdn (Stdlib::Fqdn) (defaults to: lookup('profile::openstack::base::keystone_api_fqdn'))
  • puppetmaster_hostname (Any) (defaults to: lookup('profile::openstack::base::puppetmaster_hostname'))
  • db_user (Any) (defaults to: lookup('profile::openstack::base::designate::db_user'))
  • db_pass (Any) (defaults to: lookup('profile::openstack::base::designate::db_pass'))
  • db_host (Any) (defaults to: lookup('profile::openstack::base::designate::db_host'))
  • db_name (Any) (defaults to: lookup('profile::openstack::base::designate::db_name'))
  • domain_id_internal_forward (String[1]) (defaults to: lookup('profile::openstack::base::designate::domain_id_internal_forward'))
  • domain_id_internal_reverse_v4 (String[1]) (defaults to: lookup('profile::openstack::base::designate::domain_id_internal_reverse_v4'))
  • domain_id_internal_reverse_v6 (String[1]) (defaults to: lookup('profile::openstack::base::designate::domain_id_internal_reverse_v6'))
  • enabled_notification_handlers (String[1]) (defaults to: lookup('profile::openstack::base::designate::enabled_notification_handlers'))
  • base_domain_name (String[1]) (defaults to: lookup('profile::openstack::base::designate::base_domain_name'))
  • ldap_user_pass (Any) (defaults to: lookup('profile::openstack::base::designate::ldap_user_pass'))
  • pdns_api_key (Any) (defaults to: lookup('profile::openstack::base::pdns::api_key'))
  • db_admin_user (Any) (defaults to: lookup('profile::openstack::base::designate::db_admin_user'))
  • db_admin_pass (Any) (defaults to: lookup('profile::openstack::base::designate::db_admin_pass'))
  • pdns_hosts (Array[Hash]) (defaults to: lookup('profile::openstack::base::pdns::hosts'))
  • rabbitmq_nodes (Array[Stdlib::Fqdn]) (defaults to: lookup('profile::openstack::base::rabbitmq_nodes'))
  • rabbit_user (Any) (defaults to: lookup('profile::openstack::base::designate::rabbit_user'))
  • rabbit_pass (Any) (defaults to: lookup('profile::openstack::base::designate::rabbit_pass'))
  • osm_host (Any) (defaults to: lookup('profile::openstack::base::osm_host'))
  • region (Any) (defaults to: lookup('profile::openstack::base::region'))
  • haproxy_nodes (Array[Stdlib::Host]) (defaults to: lookup('profile::openstack::base::haproxy_nodes'))
  • zookeeper_cluster_name (String) (defaults to: lookup('profile::openstack::base::designate::zookeeper_cluster_name'))


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
# File 'modules/profile/manifests/openstack/base/designate/service.pp', line 2

class profile::openstack::base::designate::service(
    $version = lookup('profile::openstack::base::version'),
    Array[Stdlib::Fqdn] $designate_hosts = lookup('profile::openstack::base::designate_hosts'),
    Array[OpenStack::ControlNode] $openstack_control_nodes = lookup('profile::openstack::base::openstack_control_nodes'),
    Stdlib::Fqdn $keystone_fqdn = lookup('profile::openstack::base::keystone_api_fqdn'),
    $puppetmaster_hostname = lookup('profile::openstack::base::puppetmaster_hostname'),
    $db_user = lookup('profile::openstack::base::designate::db_user'),
    $db_pass = lookup('profile::openstack::base::designate::db_pass'),
    $db_host = lookup('profile::openstack::base::designate::db_host'),
    $db_name = lookup('profile::openstack::base::designate::db_name'),
    String[1] $domain_id_internal_forward = lookup('profile::openstack::base::designate::domain_id_internal_forward'),
    String[1] $domain_id_internal_reverse_v4 = lookup('profile::openstack::base::designate::domain_id_internal_reverse_v4'),
    String[1] $domain_id_internal_reverse_v6 = lookup('profile::openstack::base::designate::domain_id_internal_reverse_v6'),
    String[1] $enabled_notification_handlers = lookup('profile::openstack::base::designate::enabled_notification_handlers'),
    String[1] $base_domain_name = lookup('profile::openstack::base::designate::base_domain_name'),
    $ldap_user_pass = lookup('profile::openstack::base::designate::ldap_user_pass'),
    $pdns_api_key = lookup('profile::openstack::base::pdns::api_key'),
    $db_admin_user = lookup('profile::openstack::base::designate::db_admin_user'),
    $db_admin_pass = lookup('profile::openstack::base::designate::db_admin_pass'),
    Array[Hash] $pdns_hosts = lookup('profile::openstack::base::pdns::hosts'),
    Array[Stdlib::Fqdn] $rabbitmq_nodes = lookup('profile::openstack::base::rabbitmq_nodes'),
    $rabbit_user = lookup('profile::openstack::base::designate::rabbit_user'),
    $rabbit_pass = lookup('profile::openstack::base::designate::rabbit_pass'),
    $osm_host = lookup('profile::openstack::base::osm_host'),
    $region = lookup('profile::openstack::base::region'),
    Array[Stdlib::Host] $haproxy_nodes = lookup('profile::openstack::base::haproxy_nodes'),
    String $zookeeper_cluster_name = lookup('profile::openstack::base::designate::zookeeper_cluster_name'),
) {
    $own_cloud_private_fqdn = $openstack_control_nodes.filter |$entry| { $entry['host_fqdn'] == $facts['networking']['fqdn'] }[0]['cloud_private_fqdn']

    # we want a URL like
    #  zookeeper://cloudcontrol2005-dev.private.codfw.wikimedia.cloud:2181?hosts=cloudcontrol2006-dev.private.codfw.wikimedia.cloud:2181,cloudcontrol2010-dev.private.codfw.wikimedia.cloud:2181
    # order doesn't matter
    $first = "${designate_hosts[0]}:2181"
    $others = join(map(delete($designate_hosts, $designate_hosts[0])) | $hostfqdn| {"${hostfqdn}:2181"},',')
    $tooz_url = "zookeeper://${first}?hosts=${others}"

    class{'::openstack::designate::service':
        active                        => true,
        version                       => $version,
        designate_hosts               => $designate_hosts,
        keystone_fqdn                 => $keystone_fqdn,
        db_user                       => $db_user,
        db_pass                       => $db_pass,
        db_host                       => $db_host,
        db_name                       => $db_name,
        domain_id_internal_forward    => $domain_id_internal_forward,
        domain_id_internal_reverse_v4 => $domain_id_internal_reverse_v4,
        domain_id_internal_reverse_v6 => $domain_id_internal_reverse_v6,
        enabled_notification_handlers => $enabled_notification_handlers,
        base_domain_name              => $base_domain_name,
        puppetmaster_hostname         => $puppetmaster_hostname,
        memcached_nodes               => $openstack_control_nodes.map |$node| { $node['cloud_private_fqdn'] },
        ldap_user_pass                => $ldap_user_pass,
        pdns_api_key                  => $pdns_api_key,
        db_admin_user                 => $db_admin_user,
        db_admin_pass                 => $db_admin_pass,
        pdns_hosts                    => $pdns_hosts,
        rabbitmq_nodes                => $rabbitmq_nodes,
        rabbit_user                   => $rabbit_user,
        rabbit_pass                   => $rabbit_pass,
        region                        => $region,
        tooz_url                      => $tooz_url,
    }
    contain '::openstack::designate::service'

    firewall::service { 'designate-api-backend':
        proto  => 'tcp',
        port   => 9001,
        srange => $haproxy_nodes,
    }

    $raw_pdns_hosts = $pdns_hosts.map |$host| { $host['auth_ips'] }.flatten
    $pdns_hosts_private = $pdns_hosts.map |$host| { $host['private_fqdn'] }
    $mdns_clients = flatten([$designate_hosts, $raw_pdns_hosts, $pdns_hosts_private])
    # allow axfr traffic between mdns and pdns on the pdns hosts
    firewall::service { 'mdns-axfr-tcp':
        proto  => 'tcp',
        port   => 5354,
        srange => $mdns_clients,
    }

    firewall::service { 'mdns-axfr-udp':
        proto  => 'udp',
        port   => 5354,
        srange => $mdns_clients,
    }

    class{'::profile::zookeeper::monitoring::server':
        cluster_name => $zookeeper_cluster_name,
    }
    firewall::service { 'zookeeper':
        proto  => 'tcp',
        port   => [2181, 2182, 2183],
        srange => $designate_hosts,
    }
    class{'::profile::zookeeper::server':
        own_fqdn     => $own_cloud_private_fqdn,
        cluster_name => $zookeeper_cluster_name,
    }

    openstack::db::project_grants { 'designate':
        access_hosts => $designate_hosts + $haproxy_nodes,
        db_name      => $db_name,
        db_user      => $db_user,
        db_pass      => $db_pass,
        require      => Package['designate'],
    }
}