Get pubsub nodes from puppetdb
[mirror/dsa-puppet.git] / modules / roles / manifests / pubsub.pp
index b48097e..20554ec 100644 (file)
@@ -1,2 +1,41 @@
 class roles::pubsub {
+  include roles::pubsub::params
+  include roles::pubsub::entities
+
+  $cluster_cookie  = $roles::pubsub::params::cluster_cookie
+
+  # Get the fact named hostname from all nodes in puppetdb with class Roles::Pubsub
+  $query = 'facts { name = "hostname" and resources { type = "Class" and title = "Roles::Pubsub" } }'
+  $cluster_nodes = sort(puppetdb_query($query).map |$value| { $value["value"] })
+
+  class { 'rabbitmq':
+    config_cluster    => true,
+    cluster_nodes     => $cluster_nodes,
+    cluster_node_type => 'disc',
+    erlang_cookie     => '8r17so6o1s124ns49sr08n0o24342160',
+    delete_guest_user => true,
+    ssl               => true,
+    ssl_cacert        => '/etc/ssl/debian/certs/ca.crt',
+    ssl_cert          => '/etc/ssl/debian/certs/thishost-server.crt',
+    ssl_key           => '/etc/ssl/private/thishost-server.key',
+    ssl_port          => 5671,
+    ssl_verify        => 'verify_none',
+    repos_ensure      => false,
+  }
+
+  user { 'rabbitmq':
+    groups => 'ssl-cert'
+  }
+
+  ferm::rule { 'rabbitmq':
+    description => 'rabbitmq connections',
+    domain      => '(ip ip6)',
+    rule        => '&SERVICE_RANGE(tcp, 5671, $HOST_DEBIAN)'
+  }
+
+  @@ferm::rule::simple { "pubsub-cluster-from-${::fqdn}":
+    tag   => 'roles::pubsub::intra-cluster',
+    saddr => $base::public_addresses,
+  }
+  Ferm::Rule::Simple <<| tag == 'roles::pubsub::intra-cluster' |>>
 }