Supports both primary and replica. The access rules and firewall have to be set up outside of the custom resource, so they are part of the recipes instead Refs #160
34 lines
920 B
Ruby
34 lines
920 B
Ruby
class Chef
|
|
class Recipe
|
|
def postgresql_primary
|
|
postgresql_primary = search(:node, "role:postgresql_primary AND chef_environment:#{node.chef_environment}").first
|
|
|
|
unless postgresql_primary.nil?
|
|
primary_ip = ip_for(postgresql_primary)
|
|
|
|
{ hostname: postgresql_primary[:hostname], ipaddress: primary_ip }
|
|
end
|
|
end
|
|
|
|
def postgresql_replicas
|
|
postgresql_replicas = []
|
|
|
|
search(:node, "role:postgresql_replica AND chef_environment:#{node.chef_environment}").each do |replica|
|
|
replica_ip = ip_for(replica)
|
|
|
|
postgresql_replicas << { hostname: replica[:hostname], ipaddress: replica_ip }
|
|
end
|
|
|
|
postgresql_replicas
|
|
end
|
|
|
|
def ip_for(server_node)
|
|
if node.chef_environment == "development"
|
|
server_node['network']['interfaces']['eth1']['routes'].first['src']
|
|
else
|
|
server_node['ipaddress']
|
|
end
|
|
end
|
|
end
|
|
end
|